重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关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, pyDes.CBC, Des_IV, pad=None, 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
效果
关于“Python Des加密解密怎样实现软件注册码机器码”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。