这篇文章主要介绍了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
效果
您可能感兴趣的文章:DES加密解密算法之python实现版(图文并茂)Python3对称加密算法AES、DES3实例详解python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序python3+PyQt5+Qt Designer实现扩展对话框python3+PyQt5+Qt Designer实现堆叠窗口部件详解Python 序列化Serialize 和 反序列化Deserializepython基于pyDes库实现des加密的方法深入解析Python中的descriptor描述器的作用及用法python实现DES加密解密方法实例详解