RSA工具集-openssl,rsatool,RsaCtfTool,RSAtool

openssl

OpenSSL 是一個開源項目,其組成主要包括一下三個組件:
openssl:多用途的命令行工具
libcrypto:加密算法庫
libssl:加密模塊應用庫,實現了ssl及tls

openssl可以實現:祕鑰證書管理、對稱加密和非對稱加密 。

RSA PEM文件格式

1.PEM私鑰格式文件

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

2. PEM公鑰格式文件

-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----

3. PEM RSAPublicKey公鑰格式文件

-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----

OpenSSL密鑰相關命令
1. 生成密鑰

openssl genrsa -out key.pem 1024
    -out 指定生成文件,此文件包含公鑰和私鑰兩部分,所以即可以加密,也可以解密
    1024 生成密鑰的長度

2. 提取PEM格式公鑰

openssl rsa -in key.pem -pubout -out pubkey.pem
    -in 指定輸入的密鑰文件
    -out 指定提取生成公鑰的文件(PEM公鑰格式)

3. 提取PEM RSAPublicKey格式公鑰

openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
    -in 指定輸入的密鑰文件
    -out 指定提取生成公鑰的文件(PEM RSAPublicKey格式)

4. 公鑰加密文件

openssl rsautl -encrypt -in input.file -inkey pubkey.pem -pubin -out output.file
    -in 指定被加密的文件
    -inkey 指定加密公鑰文件
    -pubin 表面是用純公鑰文件加密
    -out 指定加密後的文件

5. 私鑰解密文件

openssl rsautl -decrypt -in input.file -inkey key.pem -out output.file
    -in 指定需要解密的文件
    -inkey 指定私鑰文件
    -out 指定解密後的文件

ras 的用法如下:

openssl rsa [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in filename] [-passin arg] [-out filename] [-passout arg]
       [-sgckey] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-engine id]</pre>

常用選項:

-in filename:指明私鑰文件
-out filename:指明將提取出的公鑰保存至指定文件中 
-pubin:根據公鑰提取出私鑰
-pubout:根據私鑰提取出公鑰 

示例如下:


rsatool

安裝

git clone https://github.com/ius/rsatool.git
cd rsatool  //進入這個目錄
python setup.py install

提供模數和私有指數,PEM輸出到key.pem:

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

提供兩個素數,DER輸出到key.der:

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

項目地址:https://github.com/ius/rsatool

RsaCtfTool

安裝

安裝之前必須先安裝這四個庫(PyCrypto,GMPY2,SymPy,requests)

git clone https://github.com/Ganapati/RsaCtfTool.git 
cd RsaCtfTool  //進入這個目錄
安裝python第三方庫
pip install -r requirements.txt

用法一:已知公鑰(自動求私鑰) –publickey,密文 —-uncipherfile。
將文件解壓複製到RsaCtfTool裏:

python RsaCtfTool.py --publickey 公鑰文件 --uncipherfile 加密的文件


用法二:已知公鑰求私鑰。

RsaCtfTool.py --publickey 公鑰文件 --private


用法三:密鑰格式轉換——把PEM格式的公鑰轉換爲n,e

python RsaCtfTool.py --dumpkey --key 公鑰文件
umpkey --key 公鑰文件


用法四:密鑰格式轉換——把n,e轉換爲PEM格式

python RsaCtfTool.py --createpub -n 782837482376192871287312987398172312837182 -e 65537


項目地址:https://github.com/Ganapati/RsaCtfTool

RSAtool

下載地址:http://www.skycn.net/soft/appid/39911.html
RSAtool是一個非常方便實用的小工具,可以用來計算 RSA 中的幾個參數、生成密鑰、加解密,一些不太複雜的破解工作也可以用它。
我們找一道題爲例,來看看 RSAtool 的基本用法。

還記得 veryeasy RSA 嗎?是不是不難?那繼續來看看這題吧,這題也不難。
已知一段 RSA 加密的信息爲:0xdc2eeeb2782c 且已知加密所用的公鑰:
(N=322831561921859 e = 23)
請解密出明文,提交時請將數字轉化爲 ascii 碼提交
比如你解出的明文是 0x6162,那麼請提交字符串 ab
提交格式:PCTF {明文字符串}

這道題可以用 Python 算出來,用 RSAtool 可以更方便,因爲不用自己去寫腳本。


圖中的 PQRDE 分別就是 RSA 算法中的 pqNde,右上角選擇進制,注意不要弄錯,e 只有十六進制可用,所以這裏要把 23 換成 17
N=322831561921859 填入,左下角有一個 Factor N 的按鈕,這是分解 N 的意思,點一下,會自動開始分解因數,得到 P=13574881、Q=23781539,再點一下 Calc. D,計算出d=42108459725927,這時可以看到 Test 按鈕不再是灰色,表明可以使用簡單的加解密功能,點它,彈出一個框。

第一個框是明文,第二個框是密文,輸入明文 6162,點擊 Encrypt,得到密文 178401292768926,這時就可以使用解密功能(好像必須先用一次加密才行)。
密文 0xdc2eeeb2782c,換算十進制 242094131279916,點 Decrypt,直接得到字符串 3a5Y

參考:
Ubuntu下RsaCtfTool的安裝及使用
RSA 常用工具介紹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章