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

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenSSL 是一个强大的安全套接字层(SSL)和传输层安全(TLS)的开源实现。它可以用来实现各种加密和解密算法,其中包括 RSAPython 是一种高级编程语言,它提供了丰富的标准库和第三方库,可以轻松使用 OpenSSL 实现 RSA 加密和解密。 如果你想在 Python使用 OpenSSL 实现 RSA 加密和解密,可以使用 PyOpenSSL 模块。PyOpenSSLOpenSSLPython 接口,它可以让你在 Python 中轻松地使用 OpenSSL 的各种功能。 以下是使用 PyOpenSSL 实现 RSA 加密和解密的一些示例代码: 生成 RSA 密钥对: ```python from OpenSSL import crypto # 生成 2048 位 RSA 密钥对 key = crypto.PKey() key.generate_key(crypto.TYPE_RSA, 2048) # 将密钥对保存为 PEM 格式文件 with open('private_key.pem', 'wb') as f: f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, key)) with open('public_key.pem', 'wb') as f: f.write(crypto.dump_publickey(crypto.FILETYPE_PEM, key)) ``` RSA 加密和解密: ```python from OpenSSL import crypto # 加载 RSA 密钥对 with open('private_key.pem', 'rb') as f: private_key = crypto.load_privatekey(crypto.FILETYPE_PEM, f.read()) with open('public_key.pem', 'rb') as f: public_key = crypto.load_publickey(crypto.FILETYPE_PEM, f.read()) # 加密数据 data = b'hello, world!' encrypted_data = crypto.public_encrypt(data, public_key, crypto.PKCS1_OAEP) # 解密数据 decrypted_data = crypto.private_decrypt(encrypted_data, private_key, crypto.PKCS1_OAEP) print(decrypted_data) # 输出 b'hello, world!' ``` 以上代码仅供参考,具体实现方式可能因项目需求而异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值