当前位置 当前位置:首页 > 源码专区 > 其他源码

python简单编写RSA公钥密钥随机生成

2023-01-09小罗网络收集396

python简单编写RSA公钥密钥随机生成 图1

import random   #引入random模块

#判断参数n是否为质数,绕过是返回True 不是返回False
def pd_prime(n):
    if n <= 1:
        return False
    for i in range(2,n):
        if n % i == 0:
            return False
    return True
#获取两数的最大公约数
def gcd(x,y):
    while y != 0:
        (x,y) = (y,x % y)
    return x
#rsa密钥生成函数
def rsa_create():
    #获取质数p
    while True:
        # 通过随机数获取,范围1-10000
        p = random.randint(1,10000)
        #判断p是否为质数
        if pd_prime(p):
            break
    # 获取质数q
    while True:
        # 通过随机数获取,范围1-10000
        q = random.randint(1,10000)
        # 判断q是否为质数
        if pd_prime(q):
            break
    #计算两个质数的乘积
    N = p * q
    #计算欧拉值
    fn = (p-1) * (q-1)
    #选取公钥e
    while True:
        #通过随机数获取,范围2-fn(欧拉值)
        e = random.randint(2,fn)
        #判断e是否为质数,如果是则判断e与fn的最大公约数,如果不是,着重新获取e的值
        if pd_prime(e) == False:
            continue
        #判断e与fn的最大公约数是否为1,如果条件满足,则e的值获取成功结束循环,如果条件不满足则重新获取e的值
        if gcd(e,fn) == 1:
            break
    #计算私钥d(穷举法)
    for d in range(2,fn):
        if (e * d) % fn == 1:
            break
    print("公钥:(",e,",",N,")")
    print("私钥:(",d,",",N,")")
    #因为密文c = m ** e % n,我们设明文m为2,通过运算我们得出密文c的结果。
    c = 2 ** e % N
    print("加密结果密文c为:,",c,",")
    #用私钥(e,d)对密文c进行幂运算得到原来的明文m。
    m = c ** d % N
    print("解密结果明文m为:,", m, ",")


#运行函数rsa_create
if __name__ == '__main__':
    rsa_create()

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途。本站所有信息均来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权不妥之处请致信 E-mail:[email protected] 我们会积极处理。敬请谅解!


标签:简单  随机  生成  编写  
本站资源来自互联网收集 仅供用于学习和交流 我们尊重任何软件和教程作者的版权 请遵循相关法律法规 本站一切资源不代表本站立场
投诉侵权邮箱:[email protected] © 小罗资源网