public byte[] Decrypt(EncryptedData encryptedData) { if (!(encryptedData.Iv[0] == 1 && encryptedData.Iv[1] == 2 && encryptedData.Iv[2] == 3)) { throw new ArgumentException($"Don't know about fancy salts that do not contain the bytes 1, 2, and 3"); } return encryptedData.Bytes; }
/// <summary> /// Decrypts the given <see cref="EncryptedData"/> using the configured key. /// </summary> public byte[] Decrypt(EncryptedData encryptedData) { var iv = encryptedData.Iv; var bytes = encryptedData.Bytes; using (var rijndael = new RijndaelManaged()) { rijndael.IV = iv; rijndael.Key = _key; using (var decryptor = rijndael.CreateDecryptor()) using (var destination = new MemoryStream()) using(var cryptoStream = new CryptoStream(destination, decryptor, CryptoStreamMode.Write)) { cryptoStream.Write(bytes, 0, bytes.Length); cryptoStream.FlushFinalBlock(); return destination.ToArray(); } } }