当前位置: 首页 > 面试题库 >

解密使用RSA Java加密的“长”消息

韩喜
2023-03-14
问题内容

我有一个大的字节数组和rsa密钥对,由值1024初始化。强烈要求使用rsa加密和指定的密钥大小,因此无法更改它。因此,我不能将对称加密与不对称加密对称密钥一起使用。我不能使用其他任何键。我有一个字节数组,需要返回加密的字节数组。我想知道是否有现成的工具可以解决这个问题?

很抱歉出现这样的业余问题,但我确实需要帮助。


问题答案:

如前所述,您的问题只有一个答案,那就是“否”。RSA加密是一种对消息进行加密的算法,该消息最多可以加密给定大小,具体取决于密钥大小。带有1024位RSA密钥,并以RSA作为标准描述,最大大小为117字节,仅此而已。仅凭RSA无法加密更大的消息,这是确定的,数学上的确定性。

如果您确实需要处理更长的消息,则 必须 添加其他内容。在这种情况下,请,
,不要试图做你自己设计的任何幻想一些哦,所以,聪明的分割数据成小块等。那条路导致厄运。您可能会产生一些 看起来
可以编译和运行的东西,但是在某种程度上它总是弱小的,就像密码学上几乎所有其他自制的变体一样。这是因为无法测试安全性:这不是“有效”或“无效”的情况。

因此,非对称加密的通行之路是:

  1. 您选择一个适当长度的随机字节序列,例如128位(即16个字节)。让我们把它 ķ
  2. 您使用RSA公钥加密 K ;这会产生 ê
  3. 您可以使用对称加密算法()用 K 加密邮件"AES/CBC/PKCS5Padding"。由于这是单发键,因此可以使用全零IV。这就产生了一堆的字节,我们称之为 ˚F
  4. 然后,加密的消息是 EF 的串联。

解密以相反的顺序进行:使用RSA私钥从 E中 恢复 K ,然后使用 KF 解密为原始消息。密钥 K
永远不会存储在任何地方,并且每次都会生成一个 新的密钥K
(即使两次加密相同的消息也是如此)。这很重要,除非您了解自己在做什么(如果您已经在做,那么您已经知道了),请不要更改它。 __

给定您对问题的陈述,您除了“只是RSA”之外 必须做其他事情。我上面描述的过程是关于安全性可以想到的最佳“其他”信息。

将一些加密元素组合到这样的协议中是一个充满陷阱的过程,因此,使用已经定义的格式和支持库可能会更好。不对称加密的两种常见格式是CMS和OpenPGP。Bouncy
Castle是同时支持这两种方法并享有良好声誉的图书馆。



 类似资料:
  • 我正在尝试通过使用本文中描述的步骤来加密/解密一些数据get-a-illegalblock size异常数据必须不超过256字节。我应该怎么做很清楚,但即使我做错了什么。 这是我的课: 我尝试过这个方法,因为我认为问题在于AES使用的填充1,但我错了<运行了一段时间后,我得到了一些结果: [ENCRYPT]之前的数据: 之后的数据: 键之前: 之后的关键: [解密]密钥之前: 之后的关键: 之前的

  • 问题内容: 我有一个包含在byte []中的消息,该消息已用“ RSA / ECB / PKCS1Padding”加密。为了解密它,我创建了一个Cipher c并用 直到现在,我只使用 doFinal() 方法解密了小消息,并返回一个包含已解密字节的byte []。 但是在这种情况下,数据会更大(大约500字节),并且 doFinal() 方法会引发异常(javax.crypto.IllegalB

  • 我使用AES方法对从txt文件调用的sentance进行加密。我使用了GCM模式并创建了一个特定的密钥。一切都在工作(代码如下)。 我尝试实现解密过程,也就是说,我只有密钥(HexMyKeyvalue)和加密消息(HexEncryptedOriginalMessage value)并且我想对其进行解密。但问题是我错过了一些东西... 我写了下面的代码,但我有错误消息。 TypeError:decr

  • 使用Python-GnuPG我想 null 不幸的是,加密返回错误: 但它仍然生成加密ASCII铠甲消息,如果解密结果为对象,则bool值为属性,并包含以下属性: 不确定错误发生的确切位置以及如何处理

  • 我正在尝试使用KMS和AWS加密SDK加密数据。查看AWS文档中提供的示例,似乎没有地方可以显式设置数据键。 使用由KMS生成的数据密钥使用AWS加密SDK加密数据的推荐方法是什么?

  • 6)当我尝试解密消息时,我得到两个“gpg:[不知道]:无效数据包”消息,解密失败: