简介
RSA加密算法是一种非对称加密算法。
根据报道,目前被破解的最长RSA密钥是768个二进制位。也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。 因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。
知识点
- 不管明文长度是多少,RSA生成的密文长度总是固定的,等于密钥长度。
(密钥长度越大,生成密文的长度就越大,加密的速度就越慢,而密文也就越难被破解掉)。 - 明文长度不能超过密钥长度,否则就会出问题。
(使用分段加密,或结合对称加密,用对称加密对数据进行加密,用RSA对对称加密秘钥进行加密)。 - RSA加密每次结果是不一样的(加密时对加密内容使用了长度为11位的随机填充)。
- 密文长度不能大于密钥长度,如果进行分段加密,1024位(128字节)秘钥进行分段加密时,密文控制是117个字节,因为加密时对密文使用了长度为11个字节的填充(随机的),加起来就是128个字节。同理,如果是2048位密钥分段加密,每段密文可加密长度为256-11=244个字节。
- RSA本身不支持中文(一般使用URL编码来解决中文问题)。
注意
RSA加密前后端要协商好
- 填充类型
- 秘钥长度
RSA公钥、私钥的产生
- 寻找两个不相同的质数
随意选择两个大的质数p和q,p不等于q,计算N=p*q;
质数:除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1该数本身两个正因数]的数)。
- 根据欧拉函数获取r
r = φ(N) = φ(p)φ(q) = (p-1)(q-1)。
欧拉函数 φ(n)是小于或等于n的正整数中与n互质的数的数目。
如果两个或两个以上的整数的最大公约数是 1,则称它们为互质
- 选择一个小于r并与r互质的整数e
选择一个小于r并与r互质的整数e,求得e关于r的模反元素,命名为d(ed = 1(mod r)模反元素存在,当且仅当e与r互质),e我们通常取65537。 - 销毁p和q
此时我们的(N , e)是公钥,(N, d)为私钥,爱丽丝会把公钥(N, e)传给鲍勃,然后将(N, d)自己藏起来。一对公钥和私钥就产生了。
网友评论