java - 使用 OpenSSL (RSA-2048 Public-/Private-Key) 解密已非对称加密 (AES-256) 的 Java 文件

标签 java encryption openssl aes rsa

我知道这很难...但我使用 OpenSSL 以非常标准的方式加密文件。该文件使用 RSA-2048 公钥以 AES-256 加密。我想使用私钥在 Java 中解密文件。研究了很久,也试了很多方法,好像都不行。我只是找到与工作解决方案相关的问题,但不完全是我的问题。

我使用以下命令生成公钥/私钥对:

openssl req -x509 -nodes -days 18250 -newkey rsa:2048
-keyout MyPrivateKey.pem -out MyPublicKey.pem
-subj "/C=CH/O=My Company/CN=My Key"

我使用这个命令加密文件:

openssl smime -encrypt -aes256 -in message.zip -binary
-outform DEM -out message.dat MyPublicKey.pem

可以使用以下命令解密文件:

openssl smime -decrypt -in message.dat -binary
-inform DEM -inkey MyPrivateKey.pem -out message.zip

但是如何用Java解密呢?我知道 JCE,也听说过 BouncyCaSTLe。我只是找到提示,但没有有效的解决方案。

顺便说一句:文件使用 OpenSSL 进行非对称加密并使用 Java 进行解密是一项要求和硬约束。

感谢您的帮助,专家们!

最佳答案

openssl 命令行创建 CMS 消息(在 PKCS#7 中指定)。您需要充气城堡 SMIME 库来处理这些内容。该功能不在标准 Java API 中。

关于java - 使用 OpenSSL (RSA-2048 Public-/Private-Key) 解密已非对称加密 (AES-256) 的 Java 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22244947/

相关文章:

java - 没有这样的算法 : AES for provider BC

c - 相同的 AES 算法生成不同的加密文本?

c - 如何使用 openssl 通过本地信任库验证 PEM 中的证书?

openssl - 错误 : native library `openssl` is being linked to by more than one version of the same package

java - 使用php和java进行密码加密

java - 如何比较 if 语句中以逗号分隔的多个单词?

sql - SQL 中的加密 (SQLite)

python - 如何在python openssl客户端中阻止旧版本的TLS协议(protocol)

java - 在 Java 中获取用户定义类的闭区间子集

Java - 如何创建交替三角金字塔?