/// <summary> /// AES解密 /// </summary> /// <param name="decryptStr">解密字符串</param> /// <param name="decryptKey">密钥</param> /// <returns></returns> public static string AESDecrypt(string decryptStr, string decryptKey) { if (string.IsNullOrWhiteSpace(decryptStr)) { return(string.Empty); } decryptKey = StringHelper.SubString(decryptKey, 32); decryptKey = decryptKey.PadRight(32, ' '); byte[] cipherText = Convert.FromBase64String(decryptStr); SymmetricAlgorithm des = Rijndael.Create(); des.Key = Encoding.UTF8.GetBytes(decryptKey); des.IV = _aeskeys; byte[] decryptBytes = new byte[cipherText.Length]; using (MemoryStream ms = new MemoryStream(cipherText)) { using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read)) { cs.Read(decryptBytes, 0, decryptBytes.Length); cs.Close(); ms.Close(); } } return(Encoding.UTF8.GetString(decryptBytes).Replace("\0", ""));//将字符串后尾的'\0'去掉 }
/// <summary> /// AES加密 /// </summary> /// <param name="encryptStr">加密字符串</param> /// <param name="encryptKey">密钥</param> /// <returns></returns> public static string AESEncrypt(string encryptStr, string encryptKey) { if (string.IsNullOrWhiteSpace(encryptStr)) { return(string.Empty); } encryptKey = StringHelper.SubString(encryptKey, 32); encryptKey = encryptKey.PadRight(32, ' '); //分组加密算法 SymmetricAlgorithm des = Rijndael.Create(); byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptStr);//得到需要加密的字节数组 //设置密钥及密钥向量 des.Key = Encoding.UTF8.GetBytes(encryptKey); des.IV = _aeskeys; byte[] cipherBytes = null; using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write)) { cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); cipherBytes = ms.ToArray();//得到加密后的字节数组 cs.Close(); ms.Close(); } } return(Convert.ToBase64String(cipherBytes)); }