Qt实现软件离线授权功能(MD5 + AES)

最近项目临近提交测试阶段,领导希望我对软件进行加密,以免客户之间相互传播。简单查阅资料后总结出主流的加密方式有:1.在线远程验证(由于软件基于局域网下使用所以不考虑);2.加密狗套壳(淘宝几十块买了一份,操作不难,效果不错);3.授权码/许可证/注册表(本文将介绍此方法)

注册机实现思路:

1.获取当前设备的硬件信息(CPU、硬盘、MAC等)、授权的有效日期,得到 baseString

2.声明一个只有自己知道的 Key,使用 MD5 生成密钥(MD5不支持逆向解密)        

3.用我们的密钥对 baseString 进行加密

4.为了方便显示,将加密后的字符串转换为 Base64 格

核心代码: 

软件校验实现思路:

1.使用密钥解密得到 baseString

2.比对当前设备的硬件信息,如果硬件匹配则进行时间校验

3.注册成功后,我们可以在一些隐蔽的系统目录下动态创建一个Date.db存储注册信息,(或者直接在软件目录下创建,对数据库文件加密),记录软件首次运行时间(first_time),最后运行时间(last_time),到期时间(deadline_time),运行次数(run_times)等信息

4.后续运行软件时,对比系统当前时间与数据库中的 last_time,防止用户恶意修改系统时间,满足大于最后运行时间且小于到期时间即可正常运行

(注意:如果你无需校验时间,博主认为直接获取硬件信息+Key使用 MD5 加密即可,简单好用)

 至此,软件离线授权功能就大致完成了,本文只记录了核心的实现思路,加上了博主自己的一些见解,也不确定此方案是否绝对安全(貌似存在一些能解密MD5的网站,可能是穷举吧),如有疑问和建议,欢迎评论区留言交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值