zoukankan      html  css  js  c++  java
  • python3 计算rsa私钥 已知n e计算d

    # 分解模数n
    def rsa_moder(n):
        base = 2
        while base < n:
            if n % base == 0:
                return base, n // base
            base += 1
    
    
    # 求欧拉函数f(n)
    def rsa_get_euler(prime1, prime2):
        return (prime1 - 1) * (prime2 - 1)
    
    
    # 求私钥
    def rsa_get_key(e, euler):
        k = 1
        while True:
            if (((euler * k) + 1) % e) == 0:
                return (euler * k + 1) // e
            k += 1
    
    
    # 根据n,e计算d(或根据n,d计算e)
    def get_rsa_e_d(n, e=None, d=None):
        if e is None and d is None:
            return
    
        arg = e
        if arg is None:
            arg = d
    
        primes = rsa_moder(n)
        p = primes[0]
        q = primes[1]
    
        d = rsa_get_key(arg, rsa_get_euler(p, q))
    
        return d
    
    
    def test():
        str_fmt = 'n: {:<10} e: {:<10} d: {:<10}'
    
        # 导入rsa库
        import rsa as rsa
        key = rsa.newkeys(24)
    
        # 产生rsa密钥对
        if isinstance(key[1], rsa.PrivateKey):
            print(str_fmt.format(key[1].n, key[1].e, key[1].d))
    
        # 解密
        n = 14666299
        d = 2101153
        e = get_rsa_e_d(n, None, d)
        print(str_fmt.format(n, e, d))
    
        n = 12748507
        e = 65537
        d = get_rsa_e_d(n, e, None)
        print(str_fmt.format(n, e, d))
    
    
    if __name__ == '__main__':
        test()
  • 相关阅读:
    staticmethod & classmethod
    stanford Python
    LD_LIBRARY_PATH
    Centos7.2 errors
    theano profile
    电梯开关量GPIO配置记录
    定时器配置 中断配置 GPIO
    电梯开发进度贴
    Makefile编写学习摘要
    数据挖掘聚类算法--Kmeans
  • 原文地址:https://www.cnblogs.com/baigoogledu/p/9858091.html
Copyright © 2011-2022 走看看