4

我想解密使用 RSA 公钥加密加密的 1024 位数据。我可以访问

public key modulus, 
public key exponent, 
prime p, 
prime q, 
exponent1 (d mod(p-1)), 
exponent2 (d mod(q-1)) and 
coefficient ( (1/q) mod p )

我无权访问私钥指数。有没有办法在没有 RSA 私有指数和所有这些可用 api 的情况下解密数据?我正在使用 openssl 进行 RSA 操作。我听说有中文提示,我们只需要 p,q,exponent 1, exponent 2 和 RSA-decryption 的系数。但我正在寻找openssl中的api。openssl 中是否有任何有用的方法可以在没有私有指数的情况下进行解密?

4

1 回答 1

4

只需检查用于生成密钥对的 openssl 源...

/* create r0, r1, r2, ctx and - of course - d */

/* calculate d */
if (!BN_sub(r1, p, BN_value_one())) goto err; /* p-1 */
if (!BN_sub(r2, q, BN_value_one())) goto err; /* q-1 */
if (!BN_mul(r0, r1, r2, ctx)) goto err;       /* (p-1)(q-1) */
if (!BN_mod_inverse(d, e, r0, ctx)) goto err; /* d */
return d;

您可能需要在上面生成一些临时变量...

于 2013-09-02T12:25:42.500 回答