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加密也会有这个问题。

一个比较好的解决办法就是将明文分段加密

--------------------->这是Demo链接<---------------------

推荐阅读更多精彩内容

  • 为了防止我们的数据泄露,我们往往会对数据进行加密,特别是敏感数据,我们要求的安全性更高。下面将介绍几种常用的加密算...
    Chauncey_Chen阅读 1,683评论 1 19
  • 一、Base64 原理: base64的编码都是按字符串长度,以每3个8bit的字符为一组, 然后针对每组,首先获...
    谢谢生活阅读 3,474评论 6 33
  • 概述 之前一直对加密相关的算法知之甚少,只知道类似DES、RSA等加密算法能对数据传输进行加密,且各种加密算法各有...
    Henryzhu阅读 1,223评论 0 12
  • 本文主要介绍移动端的加解密算法的分类、其优缺点特性及应用,帮助读者由浅入深地了解和选择加解密算法。文中会包含算法的...
    voyagelab阅读 6,968评论 5 29
  • 路还是要自己走 工作不好找啊! 一打开QQ,我就看到这条消息弹了出来。 然后几个校友聊开了。 是啊!工作不好找。 ...
    余见倾心阅读 52评论 0 3