• 10992阅读
  • 14回复

Qt RSA密钥对生成器[支持2048位] 附带源码 [复制链接]

上一主题 下一主题
离线lb309925437
 

图酷模式  只看楼主 倒序阅读 楼主  发表于: 2017-08-18
RSA加密用处比较广泛, 在此就不赘述了。
不过最常用的做法是 512bit AES/DES 加密数据段,然后使用2048bit RSA 加密 AES/DES 密钥。 每隔一段时间更换 RSA密钥对。
你可以参照此程序实现动态RSA密钥更新,或者实现一个软件注册机。
简单介绍下, 本项目有2个RSA加密实现,
1 其中rsa_simple.h是一个按照网上简单的教程来写的, 只支持20bit的密钥, 作为学习原理和简单加密使用。

2 另外一个rsa.h是使用GMP大数运算库实现的RSA加密,理论上支持大于2048bit的运算, 在本程序中我自己限制到了2048bit,如果你有需要可以自己改。另外本项目是用Qt 5.7 MinGW版本编译的, 在工程文件中静态链接了libgmp库, 编译时需要注意。
3 项目中两个类里面都有一个RSA_DGB宏定义,这个默认是0, 改为1 可以看到程序运行调试打印输出。

4 项目中两个类里面都有一个test()函数, 里面包含了完整的使用方法。
5 如果你需要在自己项目中使用, 只需要把libgmp库, 还有rsa_simple类 rsa类移植到你的工程中即可, 其他的文件用不到。







源代码下载:源代码下载 EncryptDemo.rar (1107 K) 下载次数:600
安装程序下载[附件大小超出论坛限制, 请到我的百度云盘下载]: 安装程序下载  

问题欢迎QQ交流。

3条评分好评度+1贡献值+1威望+1
shasidaran 好评度 +1 - 2020-01-07
shasidaran 贡献值 +1 - 2020-01-07
shasidaran 威望 +1 - 2020-01-07
个人网站    : www.thin3.com
CSDN博客: http://blog.csdn.net/lb1885727
离线lsyzsl

只看该作者 1楼 发表于: 2017-08-18
界面做的干净整洁大方。
离线神经023

只看该作者 2楼 发表于: 2017-08-18
离线liuchangyin

只看该作者 3楼 发表于: 2017-08-21
离线liuchangyin

只看该作者 4楼 发表于: 2017-08-21
界面做的也挺好看的
离线stlcours

只看该作者 5楼 发表于: 2017-08-21
>>或者实现一个软件注册机。

就是说,把id machine做公钥,注册码做私钥,还是反过来?
离线lb309925437

只看该作者 6楼 发表于: 2017-08-21
回 stlcours 的帖子
stlcours:>>或者实现一个软件注册机。
就是说,把id machine做公钥,注册码做私钥,还是反过来? (2017-08-21 14:02) 

采用RSA算法实现注册码的基本原理
本文档只描述用户名+序列号、在线注册、激活码三种方式,其它方式不予考虑。

下面分别描述三种方式实现的基本原理:

一、 用户名+序列号
1.        生成一对公钥E和私钥D(供软件注册模板和注册机使用);
2.        软件供应商编写一个注册机,通过注册机将输入的用户名与私钥D加密码生成密码C(即:注册码);软件供应商将用户名及注册码提供给用户。
3.        用户安装软件后,输入用户名和注册码,软件注册模板采用公钥E对注册码解码后生成F(即:用户名);
4.        软件注册模板比较解码后的用户名F与输入的用户名,如果相等则用户合法,完成授权,否则授权失败。

二、在线注册
1.        生成一对公钥E和私钥D(供注册系统和注册模板使用);
2.        软件供应商将用户的凭证信息通过私钥D加密后生成F,并存储在特定的地方,比如说:存储在注册数据库中;
3.        用户安装软件后,输入用户特征信息后,软件注册模板采用公钥E对用户特征信息加密,形式成注册凭证C,通过网络发送到供应商的注册系统中。
4.        注册系统采用私钥D加密用户注册凭证C,生成F。通过F判断用户身份的有效性;
5.        注册系统将注册验证的结果通过私钥D加密后,通过网络发送给软件系统;
6.        软件注册模板采用公钥E对验证结果进行解密,根据结果来决定是否完成授权;

三、激活码
1.        生成一对公钥E和私钥D(供软件注册模板和注册机使用);
2.        用户安装软件后,软件注册模板提取用户机器的特定信息(如:MAC地址、CPU序列号、硬盘序列号等等),并通过其它的编码算法(如BASE64)生成一个申请码C;
3.        用户将申请码C发给软件供应商。软件供应商通过注册机采用私钥D加密申请码C后生成激活码F。软件供应商将激活码F发给用户。
4.        用户输入激活码F,软件注册模板采用公钥E对激活码F解码后生成G(即:用户机器特征信息),然后软件注册模板提取用户机器的特定信息后进行编码。将编码的结果与G进行比较,如果相等则用户合法,完成授权,否则授权失败。


摘自CSDN:http://blog.csdn.net/charleslei/article/details/50551008
个人网站    : www.thin3.com
CSDN博客: http://blog.csdn.net/lb1885727
离线wfwjp

只看该作者 7楼 发表于: 2018-03-22
离线hanheyfon

只看该作者 8楼 发表于: 2018-03-22
      
离线workshop

只看该作者 9楼 发表于: 2020-01-06
不错的内容
离线shasidaran

只看该作者 10楼 发表于: 2020-01-07
界面很清爽美观,思路介绍的很明确
离线jinyi7016

只看该作者 11楼 发表于: 2020-06-22
怎么在win10下可以运行,在win7下无法运行呢
离线xiaoke123

只看该作者 12楼 发表于: 2020-06-23
好东西 谢谢分享
离线sblpp

只看该作者 13楼 发表于: 2021-02-02
感谢楼主分享
离线xiaoyu2

只看该作者 14楼 发表于: 2023-05-08
谢谢分享
穷则独善其声,达则兼济天下
快速回复
限100 字节
 
上一个 下一个