密码学:非对称加密之 RSA 算法

所谓非对称加密算法就是加密和解密采用不同的密钥,加密时用公钥,解密时用私钥。而在当今互联网世界,使用最广泛的非对称加密算法非 RSA 莫属,我们熟知的支付宝、微信支付等支付工具、HTTPS 协议等无一不在使用 RSA。
RSA算法之所以被广泛使用,究其原因就在于它的极高的安全性,在提升安全性的情况下,它的性能就相对于对称加密算法如 AES要差很多。因此,它适用于一些对安全性要求较高的功能。

RSA 底层原理

公钥和私钥的产生

根据 RSA 算法原理,其公钥和私钥产生的步骤如下:

随机选择两个不同的大质数 p 和 q,计算 n=p*q。(这里的大质数要足够大,大到无法想象)
根据欧拉函数,计算 φ = (p - 1) * (q - 1)。
选择一个小于φ的整数 e,使得 e 和φ互质(即 e 和φ的公约数为 1),并求出 e 关于φ的模反元素 d,(ed - 1) mod φ = 0(所谓模反元素,其概念是如果两个正整数 a 和 n 互质,那么一定可以找到整数 b,使得 ab - 1 被 n 整除)。
销毁 p 和 q。
此时,公钥为(n,e),私钥为(n,d)。

RSA 的数学知识

欧拉函数

欧拉函数是这样定义的,它是小于或等于 n 的正整数中与 n 互质的数的数目φ (n),如 n=9,小于等于 9 的正整数中,可与之互质的数有 1、2、4、5、7、8,因而φ (n)=6。

RSA 算法中,利用了素数的分解,因而关于欧拉函数,我们只需要考虑 n 为质数的情形,如 n=7。由于质数与小于它的所有正整数都构成互质关系,因此φ (n) = n-1。在上述公钥和私钥产生的第二步,φ =(p - 1)* (q - 1),它就是由两个欧拉函数值乘积构成。

欧几里得算法

欧几里得算法就是用于求两个正整数的最大公约数(如果最大公约数为 1 则两数互质)的算法,又叫辗转相除法。
最大公约就是由上一步的除数除以余数,一直计算下去,直到余数为 0 结束,其最大公约数就是最后一个算式的除数。因此,利用欧几里得算法可以轻松找到两个互质的正整数。

欧几里得算法的编程语言实现:

Python 具体代码如下:

def gcd(a,b):
    if a % b == 0:
        return b
    r 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值