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 = "" # Key
Des_IV = "" # 自定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
效果


欢迎关注↓↓↓
头条号:小锋学长
微信公众号:xfxuezhang

Python Des加密与解密实现软件注册码、机器码的更多相关文章
- DES加密与解密在GET请求时解密失败的问题
DES加密与解密在GET请求时解密失败的问题 在数据进行加密后传递会更安全,但可能有个问题:就是Url编码问题,如果不对Url进行编码直接加密,那么在解密时,如果字符串存在 “+”,这种特殊符号,在解 ...
- 【Java】通过DES加密和解密工具,对字符串进行加密和解密操作
分享一个非常不错的字符串加密和解密的程序. 可以指定不同的密钥对同一字符串进行不同的加密操作,增强加密性能. Java代码如下: package com.app; import java.securi ...
- DES加密和解密PHP,Java,ObjectC统一的方法
原文:DES加密和解密PHP,Java,ObjectC统一的方法 PHP的加解密函数 <?php class DesComponent { var $key = '12345678'; func ...
- 一、DES加密和解密
一.DES加密和解密 原文:http://www.jb51.net/article/51879.htm 还有其他文章 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 ...
- python RSA加密、解密、签名
python RSA加密.解密.签名 python中用于RSA加解密的库有好久个,本文主要讲解rsa.M2Crypto.Crypto这三个库对于RSA加密.解密.签名.验签的知识点. 知识基础 加密是 ...
- 用python进行加密和解密——我看刑
加密和解密 密码术意味着更改消息的文本,以便不知道你秘密的人永远不会理解你的消息. 下面就来创建一个GUI应用程序,使用Python进行加密和解密. 在这里,我们需要编写使用无限循环的代码,代码将不断 ...
- Java DES 加密和解密源码(转)
原文地址:http://www.oschina.net/code/snippet_727646_18383 Java密码学结构设计遵循两个原则: 1) 算法的独立性和可靠性. 2) 实现的独立性和相互 ...
- java实现DES加密与解密,md5加密
很多时候要对秘要进行持久化加密,此时的加密采用md5.采用对称加密的时候就采用DES方法了 import java.io.IOException; import java.security.Messa ...
- DES加密And解密
加密分为:单向加密,双向加密和对称加密. 单向加密:通过对数据进行摘要计算生成密文,密文不可逆推还原.算法代表:Base64,MD5,SHA; 双向加密:与单向加密相反,可以把密文逆推还原成明文,双向 ...
随机推荐
- 用MFC构造DIRECTX应用框架
一. MFC类库与DirectXSDK Microsoft DirectX SDK是开发基于 Windows平台游戏的一个软件开发工具,其主要功能主要包括在五个组件中: DirectDraw. Dir ...
- ECMAScript 提案阶段
stage0 strawman任何讨论.想法.改变或者还没加到提案的特性都在这个阶段.只有TC39成员可以提交. stage1 proposal (1)产出一个正式的提案. (2)发现潜在的问题,例如 ...
- Selenium中使用Cookies绕过登录
在使用selenium测试后台时常常每个流程都需要走登录流程,这样自然比较浪费时间.如果遇到登录需要输入验证码等情况,就可能出师未捷身先死. 在Web应用中,登录状态通常是通过Cookie中对应的se ...
- python pywin32 安装
pip install pywin32 参考: https://blog.csdn.net/qq_38161040/article/details/85075158
- Java并发概念-2
一,死锁: 所谓死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在 ...
- Ubuntu14.04(indigo)实现RGBDSLAMv2(数据集和实时Kinect)
Ubuntu14.04(indigo)实现RGBDSLAMv2(数据集和实时Kinect v2) 一.在.bag数据集上跑RGBDSLAMv2 RGBDSLAMv2指的是Felix Endres大神在 ...
- EntityFramework Core Code First 已有数据库
问题场景:我已经有一个数据库,想用 EF core Code First,怎么办? 首先,可以参考微软的API文档:通过现有数据库在 ASP.NET Core 上开始使用 EF Core, 这一步可以 ...
- RGBD-SLAM(一)——深度摄像机
一.根据其工作原理主要分为三类: 1. 双目方案: (1) 原理: http://blog.csdn.net/shenziheng1/article/details/52883536 (2)产品: Z ...
- kotlin嵌套类
就是类中定义类 package loaderman.demo class Outer { var name: String = "name" inner class inner { ...
- Tomcat下配置javaWeb访问路径-Linux
首先找到你的Tomcat的server.xml文件 笔者直接编辑 sudo vi /app/prod/conf/server.xml 访问只需要您的IP地址就可以访问项目了 第二个配置则是访问 ip+ ...