一、AES说明
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。它要求区块大小必须为128位,而密钥长度则可以为128、196、256位。
注:AES中秘钥的长度不正确(不为128位等),则抛出异常。
在.NET Core中对于对称加密统一接口不再利用不同类而实现,对于非对称加密当然和对称加密接口就不同了,创建起来格外方便,不再是实例化对应的类,
//对称加密 var aes = Aes.Create(); var tripleDES = TripleDES.Create(); //非对称加密 var rsa = RSA.Create();
二、加密代码整理
#region AES加密解密 ////// 128位处理key /// /// 原字节/// 处理key///private static byte[] GetAesKey(byte[] keyArray, string key){ byte[] newArray = new byte[16]; if (keyArray.Length < 16) { for (int i = 0; i < newArray.Length; i++) { if (i >= keyArray.Length) { newArray[i] = 0; } else { newArray[i] = keyArray[i]; } } } return newArray;}/// /// 使用AES加密字符串,按128位处理key/// /// 加密内容/// 秘钥,需要128位、256位.....///Base64字符串结果 public static string AesEncrypt(string content, string key, bool autoHandle = true){ byte[] keyArray = Encoding.UTF8.GetBytes(key); if (autoHandle) { keyArray = GetAesKey(keyArray, key); } byte[] toEncryptArray = Encoding.UTF8.GetBytes(content); SymmetricAlgorithm des = Aes.Create(); des.Key = keyArray; des.Mode = CipherMode.ECB; des.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = des.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Convert.ToBase64String(resultArray);}////// 使用AES解密字符串,按128位处理key/// /// 内容/// 秘钥,需要128位、256位.....///UTF8解密结果 public static string AesDecrypt(string content, string key, bool autoHandle = true){ byte[] keyArray = Encoding.UTF8.GetBytes(key); if (autoHandle) { keyArray = GetAesKey(keyArray, key); } byte[] toEncryptArray = Convert.FromBase64String(content); SymmetricAlgorithm des = Aes.Create(); des.Key = keyArray; des.Mode = CipherMode.ECB; des.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = des.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Encoding.UTF8.GetString(resultArray);}#endregion
使用示例:
string key = "123";string result1 = SecurityHelper.AesEncrypt("张三丰", key);Console.WriteLine(result1); //o7TgaEbkrWOzUMOPdnrh8Q==string result2 = SecurityHelper.AesDecrypt(result1, key);Console.WriteLine(result2); //张三丰
更多: