RSA 衍生算法——Rabin 算法

攻擊條件

Rabin 算法的特徵在於 e=2

攻擊原理


如果p,q是形爲4k+3的不同素數(p≡q≡3(mod4)),則

詳細解密過程

例子

題目:破解加密數據
題目來源:2019年工業信息安全技能大賽
題目描述:



下載附件,得到py文件

m = "unknown"
e = 2
n = 0x6FBD096744B2B34B423D70C8FB19B541

assert(int(m.encode('hex'), 16) < n)
c = pow(int(m.encode('hex'), 16),e,n)
print c
#109930883401687215730636522935643539707

e=2,很明顯的Rabin算法
將n轉化爲10進制,再將n分解
解密腳本

import gmpy2
import libnum

c = 109930883401687215730636522935643539707
p = 10848126018911527523
q = 13691382465774455051
n = p*q
u = pow(c,(p+1)/4,p)
v = pow(c,(q+1)/4,q)
#   sp+tq=1  
s = gmpy2.invert(p,q)   # (p^-1) mod q 
t = gmpy2.invert(q,p)   # (q^-1) mod p
x = (t*q*u+s*p*v)%n
y = (t*q*u-s*p*v)%n

print libnum.n2s(x%n)
print libnum.n2s((-x)%n)
print libnum.n2s(y%n)
print libnum.n2s((-y)%n)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章