記一次RSA

RSA的算法涉及三個參數,n、e、d。
其中,n是兩個大質數p、q的積,n的二進制表示所佔用的位數,就是所謂的密鑰長度。
e和d是一對相關的值,e可以任意取,但要求e與(p-1)(q-1)互質;再選擇d,要求(de)mod((p-1)*(q-1))=1。
(n,e),(n,d)就是密鑰對。其中(n,e)爲公鑰,(n,d)爲私鑰。
RSA加解密的算法完全相同,設A爲明文,B爲密文,則:A=B^d mod n;B=A^e mod n;(公鑰加密體制中,一般用公鑰加密,私鑰解密)
e和d可以互換使用,即:
A=B^d mod n;B=A^e mod n

直接給了p,q,e,求d,即爲暴力破解RSA的私鑰之一的d

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import gmpy2
p = 473398607161
q = 4511491
e = 17
s = (p-1)*(q-1)
d = gmpy2.invert(e,s)
print('flag is :',d)
發佈了23 篇原創文章 · 獲贊 100 · 訪問量 8250
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章