RSA已知密文和公钥
生活随笔
收集整理的這篇文章主要介紹了
RSA已知密文和公钥
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
方法一:利用RsaCtfTool工具(kali虛擬機中)
已知公鑰(自動求私鑰)–publickey,密文–uncipherfile
命令:python RsaCtfTool.py --publickey 公鑰文件 --uncipherfile 加密的文件
方法二:利用公鑰文件用openssl工具解出e、n,然后python3腳本解出明文
之前有一篇文章寫過
1.打開kali虛擬機,用openssl解出e、n(不推薦)
命令:openssl rsa -pubin -text -modulus -in warmup -in gy.key
**e為65537,n還比較短,用python先轉換成10進制
2.用腳本從公鑰文件中解出n、e (推薦!!)
# -*- coding: cp936 -*- from Crypto.PublicKey import RSA#1.從公鑰文件中分解n和e public_key = RSA.importKey(open(r"G:\ctf\CTF題目\8eec4a4af1e14eb08648c8fda7660a0f\8eec4a4af1e14eb08648c8fda7660a0f\RSA256\gy.key",'rb').read()) n = public_key.n e = public_key.e print('N:',n) print('E:',e)運行結果
方法2 后續 對n進行因數分解
方式1:登錄網站http://factordb.com/,解出p和q
方式2:使用yafu工具
(常用于比較大的整數分解)自動整數因式分解,在RSA中,當p、q的取值差異過大或過于相近的時候,使用yafu可以快速的把n值分解出p、q值!
用法:
到此,已經獲取到RSA的全部參數
p = 273821108020968288372911424519201044333
q = 280385007186315115828483000867559983517
n=76775333340223961139427050707840417811156978085146970312315886671546666259161
e=65537
#coding:utf-8 import gmpy2 import rsa p = 273821108020968288372911424519201044333 q = 280385007186315115828483000867559983517 n = 76775333340223961139427050707840417811156978085146970312315886671546666259161 e = 65537 d = int(gmpy2.invert(e,(p-1)*(q-1))) privatekey = rsa.PrivateKey(n,e,d,p,q) with open("E:\\fllllllag.txt","rb") as f:print(rsa.decrypt(f.read(),privatekey).decode())折騰了好久,原來KALI上面我再python2里面安裝了rsa可以了,
總結
以上是生活随笔為你收集整理的RSA已知密文和公钥的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Neil Young:谈游戏ARPDAU
- 下一篇: 对付不良商家,恶补攒机知识