iOS|iOS RSA加密提升篇(分段加密)

昨天有人问我加密字符串长度超过117位就会崩溃,该怎么搞,说实话我当时都懵逼了。

  • 这篇博文有比较好的解释@Defonds。
生成密文的长度和明文长度无关,但明文长度不能超过密钥长度
  • 不管明文长度是多少,RSA 生成的密文长度总是固定的。但是明文长度不能超过密钥长度。比如 Java 默认的 RSA 加密实现不允许明文长度超过密钥长度减去 11(单位是字节,也就是 byte)。也就是说,如果我们定义的密钥(我们可以通过 java.security.KeyPairGenerator.initialize(int keysize) 来定义密钥长度)长度为 1024(单位是位,也就是 bit),生成的密钥长度就是 1024位 / 8位/字节 = 128字节,那么我们需要加密的明文长度不能超过 128字节 -11 字节 = 117字节。也就是说,我们最大能将 117 字节长度的明文进行加密,否则会出问题(抛诸如 javax.crypto.IllegalBlockSizeException: Data must not be longer than 53 bytes 的异常)。
  • 同样的道理iOS加密也会有这个问题。
一个比较好的解决办法就是将明文分段加密
【iOS|iOS RSA加密提升篇(分段加密)】--------------------->这是Demo链接<---------------------

    推荐阅读