RSA命名由来:
该篇笔记是结合多位大佬的博客总结的!
- 1977年,三位数学家Rivest、Shamir 和 Adleman提出RSA(以三人名字命名)算法实现非对称加密。从那时直到现在,RSA算法一直是最广为使用的"非对称加密算法"。
- RSA的安全性是建立在大整数因子分解的困难性上
- 毫不夸张地说,只要有计算机网络的地方,就有RSA算法。但是一般不能直接用RSA进行加密,这是不安全的。在用RSA进行加密之前要对明文进行随机化填充(一般来说),因为对于相同的明文始终会给出相同的密文。
- 公钥(n,e) 只能加密小于n的整数m,那么如果要加密大于n的整数,该怎么办?有两种解决方法:一种是把长信息分割成若干段短消息,每段分别加密;另一种是先选择一种"对称性加密算法"(比如DES),用这种算法的密钥加密信息,再用RSA公钥加密DES密钥
- n的长度就是密钥长度。3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位。实际应用中,RSA密钥一般是1024位,重要场合则为2048位。
- 只要密钥长度足够长,用RSA加密的信息实际上是不能被解破的。
RAS算法:
实例:
代码展示:
def gcd(a, b): #求最大公因子
if b == 0:
return a
else:
return gcd(b, a % b)
def ext_gcd(a, b): #求逆元,即a*i(mod)b==1;
if