gpt4 book ai didi

swift - 如何使用 OpenSSL 为 PKCS7_decrypt 函数设置填充(OAEP)

转载 作者:可可西里 更新时间:2023-11-01 01:07:03 31 4
gpt4 key购买 nike

我正在使用 OpenSSL 来加密和解密 CMS_envolped 数据的有效负载,但我想使用带有 OAEP 填充(而不是 PKCS 1.5 填充)的 AES256 密码。当我使用 PKCS1.5 填充进行加密时我很好,并且可以解密,但是当我加密并使用 OAEP 填充时我无法解密。使用 PKCS7_decrypt 解密时如何设置填充类型?

docs只谈论不适用于填充的单个标志。我应该使用不同的 OpenSSL 解密方法来进行支持 OAEP 的解密吗?我还没有找到关于它的任何文档,但不可否认我不是 OpenSSL 专家。

    guard PKCS7_decrypt(p7, privateKey, x509Cert, decryptedData, 0) == 1 else {
throw OpenSSLTests.decryptException
}

...

这无关紧要,但我在 iOS 客户端上使用 Swift 中的 OpenSSL。

最佳答案

终于找到了答案。

文档在任何地方都没有提到 OAEP 填充,但似乎 OpenSSL 中的 PKCS7_decrypt 函数不支持 OAEP 填充。据我所知,密码和填充都是在尝试解密时自动检测到的。

我尝试在 OpenSSL 中使用 CMS_decrypt 函数,它也没有指定填充的标志,并且能够很好地解密带有 OAEP 填充的 AES256 密码。

 ... 

//nil would represent failure
guard let cms = d2i_CMS_bio(encryptedDataBIO, nil) else {
throw OpenSSLTestErrors.failedToLoadCMS
}

//1 indicates success
guard CMS_decrypt(cms, key, x509Cert, nil, decryptedData, 0) == 1 else {
throw OpenSSLTestErrors.failedToDecrypt
}

CMS_decrypt 的文档位于 here

我希望有更精通 OpenSSL 的人来解释为什么 PKCS7_decrypt 函数不起作用,而 CMS_decrypt 对使用 OAEP 填充加密的项目有效。 (或者为什么 PKCS7_decrypt 函数成功使用 PKCS1.5 填充)

我也没有看到您可以在 OpenSSL 的 CMS_encrypt 函数的哪个位置指定您的填充。默认情况下它使用 PKCS1.5 然后我使用解码器检查加密数据。我假设也有一种方法可以设置它,因为我能够解密使用另一个允许指定填充的库加密的内容。

关于swift - 如何使用 OpenSSL 为 PKCS7_decrypt 函数设置填充(OAEP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56941480/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com