【问题标题】:OpenSSL Encryption not Compatible with BouncyCastle Decryption?OpenSSL 加密与 BouncyCastle 解密不兼容?
【发布时间】:2014-07-19 20:01:00
【问题描述】:

我正在 Android 应用程序中使用 OpenSSL 发送加密邮件。 发送邮件时,这是相关的本机代码 -

cipher = EVP_rc2_40_cbc();
int flags = PKCS7_STREAM;
PKCS7* p7 = PKCS7_encrypt(certs, bio, cipher, flags);
int r = SMIME_write_PKCS7(out, p7, bio, flags);

邮件已成功发送到服务器,我收到了已发送邮件通知。

现在,当我尝试使用另一个具有 bouncycastle 的 android 应用程序打开邮件时,我无法打开它。它显示“无法解密消息”。

我还尝试使用桌面上的 webmail 界面打开应用程序。在这里我也无法打开邮件。

任何想法可能是什么问题?

我也尝试使用不同的密码 (3des)。但这也不起作用。

更新 -> 如果我将加密代码更改为充气城堡,那么一切正常。我能够在安卓应用程序和网络浏览器中解密。那么这可能是 OpenSSL 问题吗?

更新 2 -> 我尝试使用 openssl 命令提示符对加密文本进行解密,并且成功了。所以我想这肯定是一些兼容性问题?但这是 bouncycastle 还是 openssl 的问题?

【问题讨论】:

  • 当你在另一边遇到问题时,为什么你认为本机代码是“相关的”?
  • @OlegEstekhin - 因为我可能传递了错误的标志。早些时候我在发送案例中遇到了这样的问题。现在我可以发送但无法解密。
  • @OlegEstekhin - 也是因为 BouncyCastle 代码功能齐全且经过全面测试。所以从逻辑上讲,唯一的问题是在 OpenSSL 端(即发送端)。
  • 如果没有看到解密端以及它使用什么“标志”,就不可能说加密端是否有“错误标志”。
  • @OlegEstekhin - 公平点。但至少我应该能够从我的网络浏览器打开加密邮件?连服务器都无法解密消息?

标签: android email encryption openssl bouncycastle


【解决方案1】:

原来我错过了一面旗帜。

int flags = PKCS7_STREAM | PKCS7_BINARY;

这就是魅力所在。

【讨论】:

    猜你喜欢
    • 2017-10-11
    • 1970-01-01
    • 2015-03-25
    • 2012-03-18
    • 2012-06-02
    • 2013-01-07
    • 2017-01-14
    • 2018-12-04
    • 1970-01-01
    相关资源
    最近更新 更多