import base64 import win32api from PyQt5.QtWidgets import QMessageBox from pyDes import * import binascii import os import sys class Register: def __init__(self): self.Des_Key = b"BHC#@*AW" # Key(可换) self.Des_IV = b"\x22\x33\x35\x81\xBC\x38\x5A\xE7" # 自定义IV向量(可换) self.str = self.getCVolumeSerialNumber() # 获取C盘卷序列号 def getCVolumeSerialNumber(self): CVolumeSerialNumber = win32api.GetVolumeInformation("C:\\")[1] # print(CVolumeSerialNumber) if CVolumeSerialNumber: return str(CVolumeSerialNumber) else: return 0 # 使用DES加base64的形式加密 def DesEncrypt(self): k = des(self.Des_Key, CBC, self.Des_IV, pad=None, padmode=PAD_PKCS5) EncryptStr = k.encrypt(self.str) return base64.b64encode(EncryptStr) # 转base64编码返回 # 获取注册码,验证 def regist(self, key): key = key self.str1 = base64.b64decode(key) if key: content = self.getCVolumeSerialNumber() key_decrypted = str(self.DesDecrypt()) if content != 0 and key_decrypted != 0: if content != key_decrypted: return False elif content == key_decrypted: return True else: return False else: return False else: return False return False # des解码 def DesDecrypt(self): k = des(self.Des_Key, CBC, self.Des_IV, pad=None, padmode=PAD_PKCS5) DecryptStr = k.decrypt(self.str1) return DecryptStr.decode('utf-8') def checkLicense(self): if os.path.isfile('static/license.lic'): with open('static/license.lic', 'r') as f: key = f.read() if self.regist(key): return True else: return False else: return False