C#实现aes加密和解密工具类
程序员文章站
2022-02-02 20:31:01
...
AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范、它被预期能成为人们公认的加密包括金融、电信和*数字信息的方法、AES是一个新的可以用于保护电子数据的加密算法
明确地说、AES是一个迭代的、对称密钥分组的密码、它可以使用128、192 和 256 位密钥、并且用 128 位(16字节)分组加密和解密数据、与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据、通过分组密码返回的加密数据的位数与输入数据相同、以下是我经过整理的代码、希望对大家有所帮助
完整的Class代码
/// <summary> /// ASE加解密 /// </summary> public class AESHelper { /// <summary> /// 获取密钥 /// </summary> private static string Key { get { return "abcdef1234567890"; ////必须是16位 } } //默认密钥向量 private static byte[] _key1 = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; /// <summary> /// AES加密算法 /// </summary> /// <param name="plainText">明文字符串</param> /// <returns>将加密后的密文转换为Base64编码,以便显示</returns> public static string AESEncrypt(string plainText) { //分组加密算法 SymmetricAlgorithm des = Rijndael.Create(); byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组 //设置密钥及密钥向量 des.Key = Encoding.UTF8.GetBytes(Key); des.IV = _key1; 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); } /// <summary> /// AES解密 /// </summary> /// <param name="cipherText">密文字符串</param> /// <returns>返回解密后的明文字符串</returns> public static string AESDecrypt(string showText) { byte[] cipherText = Convert.FromBase64String(showText); SymmetricAlgorithm des = Rijndael.Create(); des.Key = Encoding.UTF8.GetBytes(Key); des.IV = _key1; 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(" ", ""); ///将字符串后尾的´