/// <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); } }
/// <summary> /// 解密 /// </summary> /// <param name="inputStream">密文输入流</param> /// <param name="key">秘钥</param> /// <param name="iv">偏移量</param> /// <param name="outStream">明文输出流</param> public static void Decryptor(Stream inputStream, byte[] key, byte[] iv, ref Stream outStream) { using (RC2CryptoServiceProvider rC2Crypto = CreateRC2CriptoService(key, iv)) { var encryptor = rC2Crypto.CreateDecryptor(); CryptoTransform.TransformByWrite(inputStream, encryptor, ref outStream); } }
/// <summary> /// 创建签名秘钥 /// </summary> /// <param name="lenght">签名秘钥字节长度</param> /// <returns>签名Key Base64字符串</returns> public static String CreatedSignKey(int lenght = 32) { return(CryptoTransform.CreateKey(lenght)); //byte[] bytes = new Byte[lenght]; //using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider()) //{ // rng.GetBytes(bytes); // return Convert.ToBase64String(bytes); //} }
public static String CreateKeyNoIv() { return(CryptoTransform.CreateKey(32)); }