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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章