日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CTFRSA加解密

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CTFRSA加解密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近做題遇到好幾次RSA解密,最近密碼學課也學到了 RSA密碼算法,寫一篇文章促進對RSA的理解。

一:RSA的基本原理的理解:

1.學習RSA加密得知道歐拉函數,想理解歐拉函數又得弄明白同余類與剩余系的知識,這些是基礎。

2.RSA的密鑰生成原理:

第一步:選擇兩個較大素數P,Q.

第二步:計算n=pq,z=(p-1)(q-1)。

第三步:隨機選取e(其中e<n),e與z沒有公因數(e,z互為質數)

第四步:選取d使得ed-1能夠被z完全整除。ed?mod z=1

第五部:公鑰是(n,e) 私鑰是(n,d)

?

二 下面以SUCTF 2019 signin記錄一下RSA的應用與解密方法

?這里函數分析得到?

N=103461035900816914121390101299049044413950405173712170434161686539878160984549

c = 0xad939ff59f6e70bcbfad406f2494993757eee98b91bc244184a377520d06fc35

e = 65537

第一步我們要求取的是pq兩個素數的值 從其他大佬那里偷來神器RSAyafu 他可以講給定的數分成兩個相乘的素數

?

?直呼nb

第二種使用方法:

如果因數過長,將 因數 用文本文件存放在 yafu 目錄下,例如:data.txt 。文件最后一行一定要換行,否則 eof; done processing batchfile。

.\yafu-x64.exe "factor(@)" -batchfile data.txt

p = 366669102002966856876605669837014229419

q = 282164587459512124844245113950593348271

下面就是使用python解密了

(先得安裝gmpy2庫)

學習一下gmpy2庫的使用

gmpy2.invert(a,c) 對a,求b,使得a*b=1(mod c)

gmpy2.powmod(a,n,p)? 對于給定的整數p,n,a,計算a? mod p

補充一下binascii.unhexlify函數

unhexlify(hexstr)將十六進制轉換為二進制形式。

hex()函數記得加[2:]去掉開頭的0x。

求d腳本

import gmpy2 from Crypto.Util import number e=65537 n=87924348264132406875276140514499937145050893665602592992418171647042491658461 p=275127860351348928173285174381581152299 q=319576316814478949870590164193048041239 d=gmpy2.invert(e,(p-1)*(q-1)) print(d)

密文拿到手之后,需要密文的數字形式,用winhex打開查看十六進制形式

最后得到的密文的十六進制形式數字個數需要是偶數被,不是則嘗試加0或者刪除

總結

以上是生活随笔為你收集整理的CTFRSA加解密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。