【问题标题】:Decrypt CryptoAPI SIMPLEBLOB in Java在 Java 中解密 CryptoAPI SIMPLEBLOB
【发布时间】:2013-08-03 01:46:56
【问题描述】:

这是我的过程:

加密API:

  1. 生成 AES 会话密钥
  2. 使用收件人的公钥在 SIMPLEBOB 中加密和导出 (1) 使用 RSA
  3. 将 SIMPLEBOB 发送给收件人

Java:

  1. 收件人收到 (3)
  2. 收件人想要使用他的私钥解密 SIMPLEBLOB

我相信这是相当标准的。需要对接收到的字节数组进行字节反转(从上面的步骤 4 开始)。但是,由于某种原因,接收到的字节数超过了 RSA 算法可以解密的最大允许字节数。错误是“javax.crypto.IllegalBlockSizeException:数据不得超过 256 个字节”。所以还有一些我不明白的事情发生了。有人可以解释如何正确解密 Java 中的 SIMPLLEBLOB 吗?资源会有所帮助。

【问题讨论】:

  • 你见过msdn.microsoft.com/en-us/library/windows/desktop/… 吗? CryptExportKey产生的数据除了实际的密文外,还包含一定的头部。
  • @IgorTandetnik 谢谢,我不知道我是怎么错过的。所以我会去掉“BYTE encryptedkey[rsapubkey.bitlen/8];” SIMPLEBOB 的一部分,反转字节,然后在 Java 中使用 RSA 解密。
  • 如何分发公钥?这里不能使用 TLS 有什么原因吗?
  • @ntoskrnl 可以说我成功地使用 CryptoAPI 导入了公钥。

标签: java c++ encryption cryptoapi


【解决方案1】:

看看这个页面:SIMPLEBLOB structure blob 的前 12 个字节属于 BLOBHEADER。要解密密钥,请从加密 blob 的第 12 位开始。

【讨论】:

  • 是的,我们解决了这个问题,请参阅上面我的问题中的 cmets。感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-04
  • 2016-01-01
  • 1970-01-01
  • 2012-11-04
  • 2012-08-01
相关资源
最近更新 更多