Normal_RSA
一.认识文件
一个enc文件
一个是flag的密文
一个是pem文件
一个是公钥(pubkey)
pubkey.pem倒是可以打开,里面也明确写了这是个public key,而且中间有一段base64的编码
二.openssl
首先我们使用openssl提取出public.pem中的相关参数,我是在kali 里面很快
openssl rsa -pubin -text -modulus -in warmup -in pubkey.pem
三.N两个大素数的乘积:
里面modulus就是N
这里显示
但是如何提前呢?我不会写脚本,直接复制的那个M然后粘贴到笔记本,替换:为无,加上0x变成了16进制,再用cmd中的py 转10进制
int(‘0xc2636ae5c3d8e43ffb97ab09028f1aac6c0bf6cd3d70ebca281bffe97fbe30dd’,16)
四.对n进行大整数分解(P.Q)
由于这个乘积(n)长度不超过2^384,因此我们可以考虑使用yafu进行大整数分解或者在网站http://factordb.com/上进行分解(速度应该会更快),可以得到两个素数分别为: 275127860351348928173285174381581152299和319576316814478949870590164193048041239
五.rsatool生成私钥文件:
这里也折腾了好久,kali里面安了安装包,然后要把公钥丢到这个包里面才可以
进入到
进入到rsatool这个文件夹了,才能够运行,要进去,里面要有公钥
python rsatool.py -f PEM -o private.pem -p 275127860351348928173285174381581152299 -q 319576316814478949870590164193048041239 -e 65537
成功生成private.pem文件
六.明文生成
然后把private.pem和pubkey.pem、flag.enc放一个文件夹里,使用openssl用private.pem解密flag.enc文件并将明文生成txt文件
openssl rsautl -decrypt -in flag.enc -inkey private.pem -out flag.txt
openssl rsautl -decrypt -in flag.enc -inkey private.pem
好折腾,,,,