如何使用RSA加密数据,SHA-256作为哈希函数,MGF1作为掩码生成函数?

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作为哈希函数.我该怎么做 ?

sce*_*sce 5

以下摘录允许将 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)


san*_*nkr 3

OpenSSL 使用来自PKCS #1 v2.0和 的定义,因此默认值EME-OAEPSHA-1MGF1。如果需要使用SHA-256,则需要自己进行编码。不过,这并不是非常困难,请参阅PKCS #1 v2.2 PDF第 18 页了解详细信息。