【发布时间】:2013-08-03 01:46:56
【问题描述】:
这是我的过程:
加密API:
- 生成 AES 会话密钥
- 使用收件人的公钥在 SIMPLEBOB 中加密和导出 (1) 使用 RSA
- 将 SIMPLEBOB 发送给收件人
Java:
- 收件人收到 (3)
- 收件人想要使用他的私钥解密 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