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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。