数据结构课设-基于C++的RSA工具
前言
本课设是笔者在学校的课程设计上自己构思的,基于c++实现,利用QT可视化。
本项目已经同步github
https://github.com/cyan4run/RSA
经验不足,有一些算法还没有优化和改进会导致程序卡顿,可能在性能好的机子上会有些优化。
本项目的一些模块借鉴了其他大佬,如大数运算模块和miller-rabin算法,但是算力可能还是不够。
模块说明
大整数运算模块
这个模块借鉴了github上部分项目
用字符串存取一个大整数,大整数的所有运算在BigInteger.cpp中完成。其中关键的运算是modpow和modInverse函数。这两个函数用于计算RSA。其中对运算符做了重载
随机素数模块
随机一个指定位数的模块,但是这个模块即使只做了一次素性检测,在大位时仍然很慢,采用随机素数文件封装在exe中,保证加密效率,但安全性下降。当然,QT工程里primes文件夹里就是我已经预先存储的素数,可以通过python的Crypto库生成随机素数,速度很快。
这个算法部分借鉴了某项目。
RSA模块
整合了加密,解密模块在一个RSA类中,参见Rsa.cpp,Init函数将会随机生成素数并计算所有相关的RSA的值
作者一开始写的时候没有想到用户自己填写公钥加密的模块,有兴趣的可以加加。
部署方案
本项目即QT工程,直接在QT中打开选择编译架构即可运行。
封装好的exe文件也一并给出,这个exe是使用Enigma virtual box封装的。
后记
getPrime.cpp有待优化,但目前够用。
各位大佬可以看看优化一下素数算法
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Linnco的小站!
评论
ValineGitalk