重要な部分が欠落:AES暗号化...このようになります私は、静的な暗号化クラスのメソッドを持って
[TestMethod]
public void EncryptStringEncryptsTest()
{
var toEncrypt = "My text to encrypt";
var encryptionKey = Convert.FromBase64String("93mcgv9UBYpwgoUX0AXEaU1BqTCufPWPkFdOdoILLDA=");
var encrypted = Encryption.EncryptString(toEncrypt, encryptionKey);
var text = Convert.ToBase64String(encrypted);
Assert.IsTrue(false);
}
:
public static byte[] EncryptString(string toEncrypt, byte[] encryptionKey)
{
var toEncryptBytes = Encoding.UTF8.GetBytes(toEncrypt);
using (var provider = new AesCryptoServiceProvider())
{
provider.Key = encryptionKey;
provider.Mode = CipherMode.ECB;
provider.Padding = PaddingMode.ISO10126;
using (var encryptor = provider.CreateEncryptor(provider.Key, provider.IV))
{
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
cs.Write(toEncryptBytes, 0, toEncryptBytes.Length);
cs.FlushFinalBlock();
}
return ms.ToArray();
}
}
}
}
私はこのようになりますユニットテストを持っていますこれを実行するたびに、text
値が変更されます。同じ入力があれば、私はそれが一定であると期待します。それを期待して間違っているのですか、何か間違っていますか?
ECBは安全ではありません。 – SLaks
このコンテキストで「安全でない」と定義してください。モードを変更した場合、コードを変更する必要がありますか?私はほとんど常にハッシュを使用するので、対称リバーシブル暗号化は弱点があることを認めなければなりません。 –
http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 – SLaks