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

RSA.png

首發(fā)地址:我的個人博客

openssl

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

openssl可以實現(xiàn):秘鑰證書管理、對稱加密和非對稱加密 。

RSA PEM文件格式

1.PKCS#1私鑰格式文件

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

2.PKCS#8私鑰格式文件

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

3. PEM公鑰格式文件

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

4. PEM RSAPublicKey公鑰格式文件

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

OpenSSL密鑰相關命令
1. 生成PKCS#1私鑰

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

2.把RSA私鑰轉換成PKCS8格式

openssl pkcs8 -topk8 -inform PEM -in rsa_prikey.pem -outform PEM -nocrypt -out prikey.pem 

3. 根據(jù)私鑰生成公鑰

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

4. 提取PEM RSAPublicKey格式公鑰

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

5. 公鑰加密文件

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

6. 私鑰解密文件

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:根據(jù)公鑰提取出私鑰
-pubout:根據(jù)私鑰提取出公鑰 

示例如下:


image

rsatool

安裝

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

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

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

提供兩個素數(shù),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 加密的文件

image

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

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

image

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

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

image

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

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

image

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

RSAtool

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

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

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

image

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

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

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1 基礎 1.1 對稱算法 描述:對稱加密是指加密過程和解密過程使用相同的密碼。主要分:分組加密、序列加密。 原理...
    御淺永夜閱讀 2,713評論 1 4
  • 前言 早期互聯(lián)網(wǎng)數(shù)據(jù)傳輸是基于TCP/IP模型完成數(shù)據(jù)交換,其各層對傳輸?shù)臄?shù)據(jù)包進行各協(xié)議的封裝,從數(shù)據(jù)的發(fā)送方到...
    魏鎮(zhèn)坪閱讀 6,761評論 1 11
  • 本文摘自 騰訊bugly 的文章《全站 HTTPS 來了》,內容有修改。 大家在使用百度、谷歌或淘寶的時候,是否注...
    bnotes閱讀 3,871評論 1 9
  • 首先讓我們看一段代碼: 你希望得到的結果是:The sum of 3 and 4 is: 7,但是事實上,它不會被...
    kSimpleCoder閱讀 1,982評論 0 1
  • 今天是什么日子:閑來無事 起床:10:00 就寢:2:00 天氣:晴得很 心情:還好 紀念日:沒有 任務清單 昨日...
    逐夢扁舟閱讀 93評論 0 1

友情鏈接更多精彩內容