示例#1
0
            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;
            }
示例#2
0
        /// <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();
                }
            }
        }