RSA,Openssl:为什么private_decrypt需要公用密钥?

时间:2019-01-13 12:08:16

标签: encryption openssl rsa

我使用Openssl库为我的应用程序提供RSA加密解密。这就是我发现的:

 int RSA_private_decrypt(int flen, unsigned char *from,
                         unsigned char *to, RSA *rsa, int padding);

RSA_private_decrypt()使用私钥 rsa 解密 flen 个字节,并将 flen 字节存储在 (来自文档https://www.openssl.org/docs/man1.1.1/man3/RSA_private_decrypt.html

要设置RSA结构,请使用以下方法:

int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d);

n e d 参数值可以通过调用RSA_set0_key()并为< strong> n e d 作为函数的参数。第一次在给定的RSA对象上调用此函数时,值 n e 必须为非NULL。值 d 可以为NULL。(来自文档https://www.openssl.org/docs/man1.1.1/man3/RSA_set0_key.html

因此,当我如上所述将上面的内容用于解密时,一切正常。我用RSAne设置了d结构,然后使用其他参数将RSA结构传递给private_decrypt()并得到正确的结果。 / p>

但是,如果我e设置为RSA结构(或将其设置为随机值以避免非null约束),则private_decrypt()返回错误解密结果(通常为全零)。

那么,为什么解密需要e?就RSA算法而言,具有n,d和cipher_text足以提供正确的结果就足够了吗?

0 个答案:

没有答案