import base64
import win32api
from pyDes import *
from pyDes import des,PAD_PKCS5,ECB
#from binascii import a2b_hex #如果需要用二进制编码保存注册码和注册文件可以使用binascii转换
class register:
def __init__(self):
self.Des_Key = "BHC#@*UM" # Key
self.Des_IV = "\x22\x33\x35\x81\xBC\x38\x5A\xE7" # 自定IV向量
#获取C盘卷序列号
#使用C盘卷序列号的优点是长度短,方便操作,比如1513085707,但是对C盘进行格式化或重装电脑等操作会影响C盘卷序列号。
#win32api.GetVolumeInformation(Volume Name, Volume Serial Number, Maximum Component Length of a file name, Sys Flags, File System Name)
#return('', 1513085707, 255, 65470719, 'NTFS'),volume serial number is 1513085707.
def getCVolumeSerialNumber(self):
CVolumeSerialNumber=win32api.GetVolumeInformation("C:\\")[1]
if CVolumeSerialNumber:
return str(CVolumeSerialNumber) #number is long type,has to be changed to str for comparing to content after.
else:
return 0
if __name__ == '__main__':
# showUI()
re=register()
data=re.getCVolumeSerialNumber()
print(data)
#设置加密时添加的秘钥
DES_SECRET = 'mysecret'
desObj = des(DES_SECRET,ECB,None,padmode=PAD_PKCS5)
#加密
myencrypt = desObj.encrypt(data)
#解密
mydecrypt = desObj.decrypt(myencrypt)
print(myencrypt)
print(mydecrypt.decode())