Python Des加密解密如何实现软件注册码机器码


Posted in Python onJanuary 08, 2020

这篇文章主要介绍了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加密解密如何实现软件注册码机器码

Python Des加密解密如何实现软件注册码机器码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多进程并发(multiprocessing)用法实例详解
Jun 02 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
使用python实现链表操作
Jan 26 Python
利用pandas读取中文数据集的方法
Jul 25 Python
python调用百度地图WEB服务API获取地点对应坐标值
Jan 16 Python
python处理“
Jun 10 Python
Python的log日志功能及设置方法
Jul 11 Python
Pytorch 中retain_graph的用法详解
Jan 07 Python
python 实现人和电脑猜拳的示例代码
Mar 02 Python
python爬虫请求头设置代码
Jul 28 Python
一文搞懂如何实现Go 超时控制
Mar 30 Python
pytorch实现加载保存查看checkpoint文件
Jul 15 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 #Python
Pytorch DataLoader 变长数据处理方式
Jan 08 #Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 #Python
使用pytorch和torchtext进行文本分类的实例
Jan 08 #Python
python爬虫爬取监控教务系统的思路详解
Jan 08 #Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 #Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
Jan 08 #Python
You might like
php读取xml实例代码
2010/01/28 PHP
PHP基于imap获取邮件实例
2014/11/11 PHP
php-redis中的sort排序函数总结
2015/07/08 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
js实现计算器功能
2020/08/10 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
新浪网技术部笔试题
2016/08/26 面试题
师范生自荐信
2013/10/27 职场文书
失业者真诚求职信范文
2013/12/25 职场文书
会计实训报告范文
2014/11/04 职场文书
迟到检讨书
2015/01/26 职场文书
股份转让协议书范本
2015/01/27 职场文书
房屋维修申请报告
2015/05/18 职场文书
保护环境建议书作文500字
2015/09/14 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
python实现简单的三子棋游戏
2022/04/28 Python