/// <summary> /// 加密 /// </summary> /// <param name="input">明文字节数组</param> /// <param name="key">秘钥</param> /// <param name="iv">初始化向量</param> /// <returns>密文字节数组</returns> public static byte[] Encrypt(byte[] inputBytes, byte[] key, byte[] iv) { if (inputBytes == null || inputBytes.Length <= 0) { throw new ArgumentNullException("inputBytes"); } if (key == null || key.Length <= 0) { throw new ArgumentNullException("Key"); } //创建AES管理工具 using (AesManaged myAes = CreateAesManaged(key, iv)) { //创建加密算法 var encrypt = myAes.CreateEncryptor(key, iv); using (MemoryStream inputStream = new MemoryStream(inputBytes)) { Stream outStream = new MemoryStream(); try { CryptoTransform.TransformByRead(inputStream, encrypt, ref outStream); return((outStream as MemoryStream).ToArray()); } finally { if (outStream != null) { outStream.Close(); } } } } }
public static void Decryptor(Stream inputStream, byte[] key, byte[] iv, ref Stream outStream) { using (RijndaelManaged managed = CreateRijndaelManaged(key, iv)) { var encryptory = managed.CreateDecryptor(); CryptoTransform.TransformByRead(inputStream, encryptory, ref outStream); } }