RSA

Posted ls-pankong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RSA相关的知识,希望对你有一定的参考价值。

   
   

遇见一个RSA的题,http://ctf5.shiyanbar.com/crypto/RSA ,以前见了就跑路,今天想好好搞搞

先百度一波学习资料,

RSA算法描述

RSA算法涉及三个参数,n,e,d,私钥为n,d,公钥为n,e。

其中n是两个大素数p,q的乘积。

d是e模$ varphi(n) $的逆元,$ varphi(n) $是n的欧拉函数。

c为密文,m为明文,则加密过程如下:

$ cequiv m^e mod n $

解密过程如下:

$ mequiv c^d$ $mod$ $n$

n,e是公开的情况下,想要知道d的值,必须要将n分解计算出n的欧拉函数值,而n是两个大素数p,q的乘积,将其分解是困难的。

一般比赛题都是给两个文件,pem格式,pcap文件,PPC模式,

pem文件用OpenSSL,这个工具很强大,可以读取文件内容

openssl rsautl -encrypt -in FLAG -inkey public.pem -pubin -out flag.enc

   openssl rsa -pubin -text -modulus -in warmup -in public.pem

pacp文件:wireshark follow

ppc文件:这种模式是上述pcap文件的交互版,会给一个端口进行一些crypto的交互,参数会在交互中给出。

首先

 技术分享图片

红线部分即为模数,可以看出这是16进制

Modulus 是n的值,Exponent是E的值。

分解大数还有种方法http://factordb.com/

msieve分解N的值,msieve.exe 0xA41006DEFD378B7395B4E2EB1EC9BF56A61CD9C3B5A0A73528521EEB2FB817A7 -v

技术分享图片

 

便得出p和q,E的值,然后知道p,q,,e,写python脚本(此脚本参考大佬 的,不过很适合收藏留着以后打比赛)

 

技术分享图片

 

技术分享图片

 

 总计,这只是到RSA入门题,基本上都是比着题解做的,接下来要多找几道练习

 

以上是关于RSA的主要内容,如果未能解决你的问题,请参考以下文章

RSA算法详解

RSA加密解密及RSA签名和验证

easy-rsa 3 创建证书文件

PHP RSA和RSA2加密算法代码

PHP RSA和RSA2加密算法代码

RSA算法的C++实现