.NET 3.5 で実行されている C# で一部のデータを暗号化する方法を探しています。暗号化は非対称アルゴリズムを使用して行う必要があり、暗号化には秘密鍵を使用する必要があります。
RSACryptoServiceProvider
.NET フレームワークに付属するクラスは、公開キー暗号化のみを提供するため、1 つは無効になります。 そして、これを行うためのライブラリを探しましたが、クラスに依存しない問題を解決するものを見つけることができませんでしたSystem.Numerics.BigInteger
.NET 4.0(またはおそらく4.5ですが、それでも解決しません3.5 で動作します)。
理想的には、私が望むのは、この作業を行うライブラリを使用できるようにするか、次のようなことを行うクラスを (アルゴリズムの実装を最初から書き直すことなく) 記述できるようにすることです。
public class SomeAlgorithm {
public SomeAlgorithm (string xmlKey) {
// something
}
public byte[] encrypt (byte[] data, bool usePrivateKey) {
// note that data should be able to take an arbitrarily large size
// I don't expect it to become any larger than 300 or 400 bytes, but
// the implementation should be able to handle arbitrary-size data
// do something
}
public byte[] decrypt (byte[] encryptedData, bool usePrivateKey) {
// the same constraints apply to encryptedData here
// do something
}
}
署名を探しているわけではないことに注意してください。実際には、すべてのデータを秘密鍵で暗号化する必要があります。これがアルゴリズムの通常の使用方法ではないこと、および公開鍵でデータを復号化できることのセキュリティへの影響を認識しています。署名と対称暗号化に基づく実装は、この特定のケースでは役に立ちません。ここでの要件は少し奇妙ですが、最終的には、実際にはこのようにする必要があります。ここでの同様の質問には、実際にはまったく問題を解決していない主に否定的な回答が寄せられていることに気付きました。そのため、この免責事項を追加します。