前言
这年头,不会点RSA……真不好意思说自己打过CTF(23333),经历了一些比赛,几乎每场都有RSA,我也是被虐怕了……今天就统一记录一下用过的一些好用工具
RSATool
这个工具相当直接
其中:
Keysize(Bits):填写你N的位数
Public Exp.(E):填写你的e的十进制值
Number Base:填写你下面N的进制(一般采用10进制)
Modulus(N):填写N的十进制数(和Number Base填写的要对应)
然后点击左下角的Factor N
就会自动分解出P和Q
然后点击左下角的Calc. D
就会自动计算出D
然后点击左下角的Test
(这里好像有个Bug,要先加密一次,才能用解密功能)
然后把你的密文放在result里,点击decrypto
即可得到解密后的答案
yafu
一个相当方便的大数分解工具
使用指令:(到yafu-x64.exe的目录下使用)yafu-x64.exe factor(N)
例如要把大数87924348264132406875276140514499937145050893665602592992418171647042491658461
分解
只需要:yafu-x64.exe factor(87924348264132406875276140514499937145050893665602592992418171647042491658461)
即可
PARI
这个我工具我用的比较少了,一般是用来将大数16进制转10进制……或者是判断N的位数使用
指令也很简单:
第一步:x=87924348264132406875276140514499937145050893665602592992418171647042491658461
(当然,如果输入16进制,你要带上0x,他会底下自动给你显示10进制,十分方便)
第二步:binary(x)
他就会帮你把这个大数分解成2进制
第三步:length(x)
他可以帮你输出这个N的位数
openssl
经常会遇到类似如下格式的公钥:1
2
3
4
5
6-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCh5Nk2GLiyQFMIU+h3OEA4UeFb
u3dCH5sjd/sLTxxvwjXq7JLqJbt2rCIdzpAXOi4jL+FRGQnHaxUlHUBZsojnCcHv
hrz2knV6rXNogt0emL7f7ZMRo8IsQGV8mlKIC9xLnlOQQdRNUssmrROrCG99wpTR
RNZjOmLvkcoXdeuaCQIDAQAB
-----END PUBLIC KEY-----
可以使用RSA将其转换成N和E的形式,指令如下:1
openssl rsa -in public.key -pubin -noout -text -modulus
即可得到N和E