web-dev-qa-db-ja.com

System.Security.Cryptography.Aesを使用したAES256暗号化のC#の例

AES 256暗号化/復号化を実装する必要がありますが、正しく機能する例を見つけることができませんでした。

[〜#〜] msdn [〜#〜] は、AESクラスを使用することを示唆しています。

Rijndaelクラスは、Aesアルゴリズムの前身です。 Rijndaelの代わりにAesアルゴリズムを使用する必要があります。詳細については、.NETセキュリティブログのエントリ The RijndaelとAESの違い を参照してください。

誰かがAES256のAESクラスを使用して良い例の方向に私を指すことができますか?

もう少し明確にするために:

共有キーと暗号化されたテキストの文字列を含む暗号ファイルがあります。テキストを解読してから検証する必要があります。

私が見たすべての例では、暗号化/復号化を実行するために少なくとも2つのパラメーターが必要です。

暗号化ファイルのテキストから初期化ベクトルとキーを推測できるはずですか?

これは、暗号ファイルに保持されているテキストの例です。

ÊÚḱÌráƒ@†²;Ä;öDWnªóª©©¨¦L

19
TeamWild

クライアントが最後に暗号化/復号化をどのように処理しているかに関するすべての情報を発見したら、dtbによって提案された AesManaged example を使用して簡単でした。

最終的に実装されたコードは次のように始まりました。

    try
    {
        // Create a new instance of the AesManaged class.  This generates a new key and initialization vector (IV).
        AesManaged myAes = new AesManaged();

        // Override the cipher mode, key and IV
        myAes.Mode = CipherMode.ECB;
        myAes.IV = new byte[16] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // CRB mode uses an empty IV
        myAes.Key = CipherKey;  // Byte array representing the key
        myAes.Padding = PaddingMode.None;

        // Create a encryption object to perform the stream transform.
        ICryptoTransform encryptor = myAes.CreateEncryptor();

        // TODO: perform the encryption / decryption as required...

    }
    catch (Exception ex)
    {
        // TODO: Log the error 
        throw ex;
    }
2
TeamWild

here にリストされているこの例が役に立つかもしれません。著者からの声明

暗号化するコードの約24行、解読するコードの23行

8
Dimi Takis