1

几天来,我一直试图在 C++ 中获得与此 C# 代码等效的代码,但没有成功。

这是我的 C# 代码:

RSAParameters rsaParams = new RSAParameters();
rsaParams.Modulus = someByteArray;
rsaParams.Exponent = someByteArray1;
rsaParams.D = someByteArray2;
rsaParams.DP = someByteArray3;
rsaParams.DQ = someByteArray4;
rsaParams.P = someByteArray5;
rsaParams.Q = someByteArray6;
rsaParams.InverseQ = someByteArray7;

using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
    rsa.ImportParameters(rsaParams);
    byte[] encryptedData = rsa.Encrypt(toEncrypt, false);
}

我只想获得相同的确切结果,但使用 C++(跨平台)。我查看了许多库/类,但它们似乎并不合理。首先,Crypto++ 非常棒,但我想要的只是 RSA,所以在我看来,拥有他们所有的散列/加密/其他算法只是一种浪费。我找到了这个类,我认为它很好,因为它只是 RSA,而且非常小。问题是,参数的名称与 C# 的名称不同,或者它不支持它。我觉得我不应该仅仅为了实现它就必须了解每个参数在 RSA 中的含义,因为我只想在这里完成一个简单的任务。谢谢。

4

1 回答 1

2

RSAParameters 结构的属性基于Chinese Remainder Algorithm。你看过OpenSSL加密库吗?

RSA 结构由几个 BIGNUM 组件组成。它可以包含公共和私有 RSA 密钥:

struct
    {
    BIGNUM *n;              // public modulus
    BIGNUM *e;              // public exponent
    BIGNUM *d;              // private exponent
    BIGNUM *p;              // secret prime factor
    BIGNUM *q;              // secret prime factor
    BIGNUM *dmp1;           // d mod (p-1)
    BIGNUM *dmq1;           // d mod (q-1)
    BIGNUM *iqmp;           // q^-1 mod p
    // ...
    };
RSA
于 2012-08-03T00:15:40.850 回答