首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javax.crypto.IllegalBlockSizeException

javax.crypto.IllegalBlockSizeException
EN

Stack Overflow用户
提问于 2011-05-09 22:52:36
回答 2查看 6.5K关注 0票数 7

javax.crypto.IllegalBlockSizeException:数据不能长于53字节我知道这是因为RSA算法只能加密最大字节长度为RSA key length的位除以8减去11个填充字节的数据,即最大字节数= key length in bits /8-11。

这里我使用512密钥大小,所以它不允许超过53。但我需要维护512位密钥,但加密超过53字节是否有任何可能性。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-09 23:00:08

是也不是。您不能使用RSA加密,但您可以使用以下方法之一:

  1. 执行通常的方法,即使用对称算法进行加密,并传递使用RSA加密的密钥。例如,使用公钥PK将数据D发送给另一个man:

代码语言:javascript
运行
复制
1. send Ek(D) (D encrypted with symmetric algorithm with key K) 
2. send Epk(K) as well (K encrypted with RSA algorithm with PK)

另一边开PK(K)得到K,开K( D )得到D。

  1. 将数据拆分成小块,并分别对每个块进行加密。

第一种方法要好得多,主要有两个原因:

itself).

  • Symmetric加密/解密比公开加密快得多,例如,
  1. 是对数据进行简单的异或运算,而RC4使用的功率很大。

(3. PGP如此普遍肯定是有原因的…)

票数 7
EN

Stack Overflow用户

发布于 2011-05-09 23:57:09

你为什么不使用包络呢?生成对称密钥( AES ),使用该AES密钥加密数据,然后使用公开RSA密钥加密AES密钥。发送加密的数据,以及加密的AES密钥。然后使用私有RSA密钥解密AES密钥,并使用该密钥解密其余数据。这将允许您加密任何大小的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5938611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档