您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Python Des加密解密怎樣實現軟件注冊碼機器碼,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
原理
判斷路徑下是否存在識別文件,若存在就解密對比,若不存在就進入機器碼注冊:
獲取系統C盤序列號作為識別ID,并添加隨機數作為混淆,生成最終機器碼。
將機器碼發給軟件開發者,開發者將機器碼解密后,添加自己的標識符號并加密生成key,發給用戶。
用戶輸入key,程序對比并保存。
用戶下次打開軟件時,重新開始步驟‘1'。
說明
加密:將序列號經過Des加密,再經過base64編碼。
解密:將密碼經過base64解碼,再經過Des解密。
寫文件:將二進制字符轉為十六進制保存。
讀文件:將十六進制轉為二進制。
代碼
# coding: utf-8 import win32api import pyDes from binascii import b2a_hex, a2b_hex import base64 import os def getCVolumeSerialNumber(): CVolumeSerialNumber=win32api.GetVolumeInformation("C:\\")[1] # print(CVolumeSerialNumber) if CVolumeSerialNumber: return str(CVolumeSerialNumber) else: return 0 def DesEncrypt(str): k = pyDes.des(Des_Key, pyDes.CBC, Des_IV, pad=None, padmode=pyDes.PAD_PKCS5) encryptStr = k.encrypt(str) string = base64.b64encode(encryptStr) # print(string) return string # 轉base64編碼返回 def DesDecrypt(string): string = base64.b64decode(string) k = pyDes.des(Des_Key, pyDes.CBC, Des_IV, pad=None, padmode=pyDes.PAD_PKCS5) decryptStr = k.decrypt(string) # print(decryptStr) return decryptStr Des_Key = "12345678" # Key Des_IV = "12345678" # 自定IV向量 def Register(): if os.path.isfile('conf.bin'): with open('conf.bin', 'rb') as fp: key = a2b_hex(fp.read()) print(key) serialnumber = getCVolumeSerialNumber() decryptstr = DesDecrypt(key).decode('utf8') print(decryptstr) if serialnumber in decryptstr: if 'Buy' in decryptstr: print('>> Buy') print(">> 驗證完成") return 1 elif 'Trial' in decryptstr: print('>> Trial') return 2 rand = str(random.randrange(1, 1000)) serialnumber = getCVolumeSerialNumber() + rand print(serialnumber) encryptstr = DesEncrypt(serialnumber).decode('utf8') print(">> 序列號:", encryptstr) while True: key = input(">> 驗證碼:") try: decryptstr = DesDecrypt(key.encode('utf8')).decode('utf8') print(decryptstr) if serialnumber in decryptstr: if 'Buy' in decryptstr: print('>> Buy') with open('conf.bin', 'wb') as fp: fp.write(b2a_hex(key.encode('utf8'))) print(">> 驗證完成") return 1 elif 'Trial' in decryptstr: print('>> Trial') return 2 except Exception as e: print(e) print(">> 輸入錯誤") continue
效果
關于“Python Des加密解密怎樣實現軟件注冊碼機器碼”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。