Python Des加密解密如何实现软件注册码机器码
这篇文章主要介绍了PythonDes加密解密如何实现软件注册码机器码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
原理
- 判断路径下是否存在识别文件,若存在就解密对比,若不存在就进入机器码注册:
- 获取系统C盘序列号作为识别ID,并添加随机数作为混淆,生成最终机器码。
- 将机器码发给软件开发者,开发者将机器码解密后,添加自己的标识符号并加密生成key,发给用户。
- 用户输入key,程序对比并保存。
- 用户下次打开软件时,重新开始步骤‘1'。
说明
- 加密:将序列号经过Des加密,再经过base64编码。
- 解密:将密码经过base64解码,再经过Des解密。
- 写文件:将二进制字符转为十六进制保存。
- 读文件:将十六进制转为二进制。
代码
#coding:utf-8
importwin32api
importpyDes
frombinasciiimportb2a_hex,a2b_hex
importbase64
importos
defgetCVolumeSerialNumber():
CVolumeSerialNumber=win32api.GetVolumeInformation("C:\\")[1]
#print(CVolumeSerialNumber)
ifCVolumeSerialNumber:
returnstr(CVolumeSerialNumber)
else:
return0
defDesEncrypt(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)
returnstring#转base64编码返回
defDesDecrypt(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)
returndecryptStr
Des_Key="12345678"#Key
Des_IV="12345678"#自定IV向量
defRegister():
ifos.path.isfile('conf.bin'):
withopen('conf.bin','rb')asfp:
key=a2b_hex(fp.read())
print(key)
serialnumber=getCVolumeSerialNumber()
decryptstr=DesDecrypt(key).decode('utf8')
print(decryptstr)
ifserialnumberindecryptstr:
if'Buy'indecryptstr:
print('>>Buy')
print(">>验证完成")
return1
elif'Trial'indecryptstr:
print('>>Trial')
return2
rand=str(random.randrange(1,1000))
serialnumber=getCVolumeSerialNumber()+rand
print(serialnumber)
encryptstr=DesEncrypt(serialnumber).decode('utf8')
print(">>序列号:",encryptstr)
whileTrue:
key=input(">>验证码:")
try:
decryptstr=DesDecrypt(key.encode('utf8')).decode('utf8')
print(decryptstr)
ifserialnumberindecryptstr:
if'Buy'indecryptstr:
print('>>Buy')
withopen('conf.bin','wb')asfp:
fp.write(b2a_hex(key.encode('utf8')))
print(">>验证完成")
return1
elif'Trial'indecryptstr:
print('>>Trial')
return2
exceptExceptionase:
print(e)
print(">>输入错误")
continue
效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。