5

私は RSA 暗号化が初めてで、.Net のSystem.Security.Cryptography.

    public String Encryption(Byte[] Input, RSAParameters PublicKey)
    {
        RSAC = new RSACryptoServiceProvider();
        RSAC.ImportParameters(PublicKey);
        Byte[] Encrypt = RSAC.Encrypt(Input, false);
        return Convert.ToBase64String(Encrypt);
    }

上記のコードを使用すると、アプリケーションを再起動するたびに、同じ入力に対して別の暗号化された文字列が取得されます。これが正常な動作であるかどうか、そうでない場合はそれを防ぐ方法を知りたいです。

たとえば、プログラムは入力 "Hello" に対して次の文字列を返します。

NopDAF5FRu....

アプリケーションを再起動すると、同じ入力に対する出力は次のようになります。

pPPu8x6....

ただし、RSA 暗号化クラスの新しいオブジェクトを作成すると、すべてのオブジェクトが同じ出力を返します。

4

1 に答える 1

6

それはまったく正常で問題ありません。暗号化されるデータは、ランダムな値でパディングされたブロック内に配置されます。その後、公開鍵で暗号化されます。

詳細については、このSO Q&Aを参照してください。

于 2013-11-16T15:45:16.123 に答える