AES est intégré dans le cadre, comme la classe Aes dans System.Security.Cryptography. Il existe deux implémentations concrètes, l'une gérée, l'autre utilisant Windows Crypto Service Provider (plus rapide, mais non portable vers d'autres plateformes). Il y a aussi une implémentation de Rijndael, dont dérive AES. N'oubliez pas que vous avez besoin d'un vecteur d'initialisation, ainsi que de la clé pour crypter/décrypter, car c'est un chiffrement par bloc. Si vous cryptez sans en configurer un, un sera utilisé, mais vous devrez le stocker et le récupérer pour le déchiffrement.
Exemple de code: (levé du chapitre 6 de mon livre à paraître grin)
static byte[] Encrypt(byte[] clearText, byte[] key, byte[] iv)
{
// Create an instance of our encyrption algorithm.
RijndaelManaged rijndael = new RijndaelManaged();
// Create an encryptor using our key and IV
ICryptoTransform transform = rijndael.CreateEncryptor(key, iv);
// Create the streams for input and output
MemoryStream outputStream = new MemoryStream();
CryptoStream inputStream = new CryptoStream(
outputStream,
transform,
CryptoStreamMode.Write);
// Feed our data into the crypto stream.
inputStream.Write(clearText, 0, clearText.Length);
// Flush the crypto stream.
inputStream.FlushFinalBlock();
// And finally return our encrypted data.
return outputStream.ToArray();
}
et pour décrypter
static byte[] Decyrpt(byte[] clearText, byte[] key, byte[] iv)
{
// Create an instance of our encryption algorithm.
RijndaelManaged rijndael = new RijndaelManaged();
// Create an decryptor using our key and IV
ICryptoTransform transform = rijndael.CreateDecryptor(key, iv);
// Create the streams for input and output
MemoryStream outputStream = new MemoryStream();
CryptoStream inputStream = new CryptoStream(
outputStream,
transform,
CryptoStreamMode.Write);
// Feed our data into the crypto stream.
inputStream.Write(clearText, 0, clearText.Length);
// Flush the crypto stream.
inputStream.FlushFinalBlock();
// And finally return our decrypted data.
return outputStream.ToArray();
}
remplacer la classe RijndaelManaged avec l'une des classes AES et approprié clé.
J'essaye de faire ceci, et je continue à obtenir une violation de taille de clé. Voici ma clé: string verySecureKey = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"; Quand je fais: var algo = new System.Security.Cryptography.RijndaelManaged(); keyArray = UTF8Encoding.UTF8.GetBytes (verySecureKey); algo.Key = keyArray; Je reçois une violation de clé sur la dernière ligne (64 bits au lieu de 32) - mais cela fonctionne très bien dans AS3Crypto. Pensées? – aronchick