Linux运用openssl以及rsatool解决一点点rsa的问题 python2.7(新手向

Openssl

openssl是linux系统自带的一个工具,在terminal里输入openssl就能使用了。(Ctrl+C可以退出来)

在这里插入图片描述
遇到.pem .enc 或者是.der 文件格式时就要用上openssl了,一般都是给公钥文件以及flag文件让你求flag。首先遇到pubkey.pem,就是rsa 的公钥文件,把该文件拖到虚拟机Linux的桌面上,然后再进入该目录,输入

openssl rsa -in pubkey.pem -pubin -modulus -text

-in 是输入文件
-pubin是表示从文件中公钥(因为默认是读取私钥)
附加:-pubout是表示输出公钥(默认是输出私钥)
所以上面也可以换成这个:

openssl rsa -in pubkey.pem -pubin -pubout -modulus -text

结果都是一样的。噢噢上面的还没说完,我们继续。
-text 是输出密钥的各种组件信息以及密钥文件本身的文本(但是不会直接输出公钥,所以需要下一句)
-modulus 是输出密钥模数(就是输出N)模N嘛
实际上-text命令提供e,-modulus命令提供N
在这里插入图片描述
图中的Exponent就是e,Modulus就是N。
-noout 命令是不输出密钥文件的文本内容,即上图中—BEGIN PUBLIC KEY–到—END PUBLIC KEY —的内容。
所以想要输出的内容美观一点,只需输入

openssl rsa -in pubkey.pem -pubin -modulus -noout

在这里插入图片描述就会仅仅输出N啦

rsatool

下载连接:
https://github.com/ius/rsatool
这个是在python下运行的工具,一般Linux里都有。在终端输入python就行了
在这里插入图片描述

要是没有的话直接按照提示输入代码装就好了。
其实我装rsatol的时候老是出现问题。。现在就简单总结一下:
首先把setup.py打开,看看要求
在这里插入图片描述
第二行的 setuptools 和标橙的倒数第二行’gmpy’ 和’pyasn1’都要提前安装好。

我建议是先安装pip,因为这个实在是太方便了,而且不容易出错。

先在linux终端输入:

wget https://bootstrap.pypa.io/get-pip.py

下载完毕后再输入:

sudo python get-pip.py

最后得到Successfully installed pip-19.2.1 wheel-0.33.4就是安装成功了!

ok,有了pip之后一切都简单了。要安装setuptools就一行解决:

sudo pip install setuptools

sudo是获取权限
接着安装gmpy。网上说gmpy得先安装gmy,所以

sudo apt-get install libgmp-dev

要是出现
defeat respond:
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
重启就好了

pip install gmpy

如果出现

在这里插入图片描述

那就先

sudo apt-get install libssl-dev libffi-dev build-essential libxml2-dev libxslt1-dev

还不行就装上python2.7-dev

sudo apt-get install python2.7-dev

后面是要安装pyasn1,直接

pip install pyasn1 

最后就进入rsatool的目录安装就行啦

 sudo python setup.py install

在这里插入图片描述最后得到Finished processing dependencies for rsatool==1.0就算是安装成功了。

我觉得rsatool就是一个简单的计算工具吧,有两种输入方法:一是输入p和q,另一种是输入n和d。之后让它生成一个完整的密钥文件(p,q,n,e,d)
使用方法:
一.输入p和q

python rsatool.py -f DER -o key.pem -p 4184799299 -q 3303891593

二.输入n和d

python  rsatool.py -f PEM -o key.pem -n 13826123222358393307 -d9793706120266356337

-f是输出文件的格式
-o是输出文件的名称

最后我们可以得到key.pem 这个密钥文件,注意这是.pem文件,所以又得用openssl来操作。
解密:(假设待解密文件是flag.enc)

openssl rsautl -decrypt -in flag.enc  -inkey key.pem

-inkey 是用的密钥文件
-decrypt是解密
最后解密结果就会输出来了

以上是根据攻防世界题目Normal_RSA得到的一些经验和教训。
参考连接:https://blog.csdn.net/Yu_csdnstory/article/details/90759717
https://www.jb51.net/softjc/574976.html
https://blog.csdn.net/u013687821/article/details/45113131
https://www.jianshu.com/p/7575f7976dad

发布了8 篇原创文章 · 获赞 13 · 访问量 2623

猜你喜欢

转载自blog.csdn.net/jcbx_/article/details/97250664
今日推荐