jit*_*hin 9 c openssl cryptography rsa sha256
我正在做一些密码学实验.现在我有接收器的公钥,我想加密一些数据并传递给接收器.
我想使用RSAES-OAEP算法.SHA-256作为哈希函数,MGF1作为掩码生成函数.
我想用openssl做这个.我找到了一个RSA_public_encrypt()具有此功能的函数,我们可以指定填充.其中一个填充选项是
RSA_PKCS1_OAEP_PADDING
在PKCS#1 v2.0中使用SHA-1,MGF1定义的EME-OAEP.
他们正在使用sha-1.
我想重新配置函数使用SHA256作为哈希函数和MGF1作为哈希函数.我该怎么做 ?
以下摘录允许将 OAEP 与 SHA256 用于 MGF 和哈希函数。使用 OpenSSL 1.0.2L 测试
int flags = CMS_BINARY | CMS_PARTIAL | CMS_KEY_PARAM;
cms = CMS_encrypt(NULL, in, cipher, flags)
ri = CMS_add1_recipient_cert(cms, cert, flags);
pctx = CMS_RecipientInfo_get0_pkey_ctx(ri);
EVP_PKEY_CTX_set_rsa_padding(pctx, RSA_PKCS1_OAEP_PADDING);
EVP_PKEY_CTX_set_rsa_oaep_md(pctx, EVP_sha256());
EVP_PKEY_CTX_set_rsa_mgf1_md(pctx, EVP_sha256());
Run Code Online (Sandbox Code Playgroud)
OpenSSL 使用来自PKCS #1 v2.0和 的定义,因此默认值EME-OAEP是SHA-1和MGF1。如果需要使用SHA-256,则需要自己进行编码。不过,这并不是非常困难,请参阅PKCS #1 v2.2 PDF第 18 页了解详细信息。