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 構造体のプロパティは、中国剰余アルゴリズムに基づいています。OpenSSL暗号ライブラリを見ましたか?

RSA 構造は、複数の BIGNUM コンポーネントで構成されています。公開 RSA キーと秘密 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 に答える