Python Des加密解密如何實現軟體註冊碼機器碼
阿新 • • 發佈:2020-01-09
這篇文章主要介紹了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,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
效果
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。