非对称加密技术RSA详解(python实现版本)

本文详细解析非对称加密算法RSA,并提供了一个使用Python实现的示例。通过介绍素数检测、欧几里得求逆元法以及加密解密过程,帮助读者深入理解RSA的工作原理。
摘要由CSDN通过智能技术生成

一、非对称加密算法特点:

1、加密与解密由不同的密钥完成
2、知道加密算法,从加密密钥得到解密密钥在计算上是不可行的
3、两个密钥中任何一个都可以用作加密而另一个用作解密
4、用户拥有自己的密钥对
5、公钥公开,私钥保密

二、加密流程:
1、产生密钥对
2、选择两个大素数p,q, p!=q
3、计算n=p*q,m=(p-1)*(q-1)
4、选择整数e,使得互质判别函数 gcd(e,m)=1
5、计算e关于m的乘法逆元d,本例中逆元求法,用的是欧几里得法
6、公钥: KP={e,n},  私钥: Ks={d,n}
7、公布n,e; 保密p,q,d, 
8、 使用
加密: C = M^e mod n
解密: M = C^d mod n

三、代码详解(python实现代码)

##writer liuyang@BUAASoftwareDepartment 
#date:2014/05/07
#function:rsa加密
#contact me:734056968@qq.com


import random #导入随机函数库
       
#进行素性监测-miller-Rabin算法,判别依据a^(n-1)≡1 (mod n) (a为任意2~n-1的正整数)则可近似认为n为素数。
def PRIME_test(number):
    s=6  #s是需要测试的次数
    for i in range(s):
        a=random.randrange(2,number-1)
        if pow(a,number-1,number)!=1:
            return 0
    return 1

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

附:

Miller-Rabin素性检测算法

算法含义如果a^(n-1)≡1 (mod n) (a为任意2~n-1的正整数)则可近似认为n为素数。这种方法叫做 Miller-Rabbin算法。对于待验证的数n,我们不断取a验证a^(n-1) mod n是否等于1,不是则n一定不是素数,共取s次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值