RSA 衍生算法——Rabin 算法

攻击条件

Rabin 算法的特征在于 e=2

攻击原理

图片.png

如果p,q是形为4k+3的不同素数(p≡q≡3(mod4)),则
图片.png

详细解密过程

IMG_20190807_105416.jpg
图片.png

例子

题目:破解加密数据
题目来源:2019年工业信息安全技能大赛
题目描述:


图片.png

下载附件,得到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)

推荐阅读更多精彩内容

  • 0x01 目录 常见编码: ASCII编码 Base64/32/16编码 shellcode编码 Quoted-p...
    H0f_9阅读 6,966评论 2 15
  • 概述 之前一直对加密相关的算法知之甚少,只知道类似DES、RSA等加密算法能对数据传输进行加密,且各种加密算法各有...
    Henryzhu阅读 1,453评论 0 12
  • 上一次,我介绍了一些数论知识。 有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的加密算法。 六、密钥...
    程序猿之路阅读 337评论 0 2
  • 关于使用python实现RSA加密解密 一、非对称加密算法 1、乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何...
    ttaymm阅读 67评论 0 0
  • 要准备考研了焦虑值直线上升
    施柏楚阅读 26评论 0 0