iOS RSA加密

2019-10-29  本文已影响0人  MrSYLong
简介

RSA加密算法是一种非对称加密算法。

根据报道,目前被破解的最长RSA密钥是768个二进制位。也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。 因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。

知识点
  1. 不管明文长度是多少,RSA生成的密文长度总是固定的,等于密钥长度。
    (密钥长度越大,生成密文的长度就越大,加密的速度就越慢,而密文也就越难被破解掉)。
  2. 明文长度不能超过密钥长度,否则就会出问题。
    (使用分段加密,或结合对称加密,用对称加密对数据进行加密,用RSA对对称加密秘钥进行加密)。
  3. RSA加密每次结果是不一样的(加密时对加密内容使用了长度为11位的随机填充)。
  4. 密文长度不能大于密钥长度,如果进行分段加密,1024位(128字节)秘钥进行分段加密时,密文控制是117个字节,因为加密时对密文使用了长度为11个字节的填充(随机的),加起来就是128个字节。同理,如果是2048位密钥分段加密,每段密文可加密长度为256-11=244个字节。
  5. RSA本身不支持中文(一般使用URL编码来解决中文问题)。
注意

RSA加密前后端要协商好

  1. 填充类型
  2. 秘钥长度
RSA公钥、私钥的产生
  1. 寻找两个不相同的质数
    随意选择两个大的质数p和q,p不等于q,计算N=p*q;
质数:除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1该数本身两个正因数]的数)。
  1. 根据欧拉函数获取r
    r = φ(N) = φ(p)φ(q) = (p-1)(q-1)。
欧拉函数 φ(n)是小于或等于n的正整数中与n互质的数的数目。

如果两个或两个以上的整数的最大公约数是 1,则称它们为互质
  1. 选择一个小于r并与r互质的整数e
    选择一个小于r并与r互质的整数e,求得e关于r的模反元素,命名为d(ed = 1(mod r)模反元素存在,当且仅当e与r互质),e我们通常取65537。
  2. 销毁p和q
    此时我们的(N , e)是公钥,(N, d)为私钥,爱丽丝会把公钥(N, e)传给鲍勃,然后将(N, d)自己藏起来。一对公钥和私钥就产生了。
参考

iOS端RSA加密
iOS端基于RSA公钥加密和解密
RSA算法详解

上一篇下一篇

猜你喜欢

热点阅读