RSA 衍生算法——Rabin 算法

作者: 简言之_ | 来源:发表于2019-08-08 00:04 被阅读4次

    攻击条件

    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)
    

    相关文章

      网友评论

        本文标题:RSA 衍生算法——Rabin 算法

        本文链接:https://www.haomeiwen.com/subject/txwndctx.html