3

RSACryptoServiceProviderを使用して公開/秘密キーを作成し、XML として保存しました。これを使用して、.NET のデータを暗号化/復号化/署名および検証できます。

Linux サーバーで実行することを目的とした別のアプリケーションがあります。私はC++で開発しており、暗号化のニーズにCrypto++を使用しています。

これら 2 つのアプリケーション間でデータを共有したいのですが、そのためには RSAParameters を Crypto++ が理解できる公開/秘密キーに変換する必要があります。

また、Crypto++ によって生成された公開/秘密キーを RSAParameters に変換する方が簡単な場合は、それを使用することにもオープンです。

何か案は?

4

1 に答える 1

2

最も簡単な方法は、おそらく XML を使用する代わりに、RSAParameters を直接使用することです。

RSAParameters に含まれるバイト配列を、独自に選択した形式を使用してファイルに保存するだけです。C++ プログラムでバイト配列を読み取り、それらからCryptoPP::Integerを作成します。これらの整数を使用して、RSAFunction (公開鍵) またはInvertibleRSAFunction (秘密鍵) を初期化します。

逆の方法も同様です: すなわち

RSAFunction publicKey = ...;

size_t modulusLength = publicKey.getModulus().ByteCount();
unsigned char * modulus = new unsigned char[modulusLength];
publicKey.getModulus().Encode(modulus, modulusLength);

// similarly with PublicExponent and remember to clean up the arrays.

配列を .NET アプリケーションに転送し、そこでそれらを使用して RSAParameters を初期化できます。

于 2009-05-28T19:25:44.850 に答える