对称加密AES

Posted fangyyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对称加密AES相关的知识,希望对你有一定的参考价值。

 static void Main(string[] args)
        {
            //string str = "rqiJI7eEICT+YZmScpAdbjzLnA4mgL3uU5uHXLBeaE6s8P3noNriVQZ/fO52ar8I9BSkVZIiyP8ArdG/KkXZi5Cn8rZaOVyEjgqhfFlTRIg=";
            string str = "{ "UserID":1,"Email":null,"LoginTime":"2018 - 12 - 12T11: 25:38.6208949 + 08:00"";
            string result = EncodeAES(str, "yhkZvOJSnTHG9hKT", "yhkZvOJSnTHG9hKT");
            Console.WriteLine(result);
            //Console.WriteLine(DecodeAES(str, "ptQJqRKxICCTeo6w", "O3vZvOJSnQDP9hKT"));
            Console.ReadKey();
        }

加密代码    需要引用System.Security.Cryptography命名空间

public static string EncodeAES(string text, string key, string iv)
        {
            RijndaelManaged rijndaelCipher = new RijndaelManaged();
            rijndaelCipher.Mode = CipherMode.CBC;
            rijndaelCipher.Padding = PaddingMode.Zeros;
            rijndaelCipher.KeySize = 128;
            rijndaelCipher.BlockSize = 128;
            byte[] pwdBytes = System.Text.Encoding.UTF8.GetBytes(key);
            byte[] keyBytes = new byte[16];
            int len = pwdBytes.Length;
            if (len > keyBytes.Length)
                len = keyBytes.Length;
            System.Array.Copy(pwdBytes, keyBytes, len);
            rijndaelCipher.Key = keyBytes;
            rijndaelCipher.IV = Encoding.UTF8.GetBytes(iv);
            ICryptoTransform transform = rijndaelCipher.CreateEncryptor();
            byte[] plainText = Encoding.UTF8.GetBytes(text);
            byte[] cipherBytes = transform.TransformFinalBlock(plainText, 0, plainText.Length);
            return Convert.ToBase64String(cipherBytes);
        }

解密

public static string DecodeAES(string text, string key, string iv)
{
RijndaelManaged rijndaelCipher = new RijndaelManaged();
rijndaelCipher.Mode = CipherMode.CBC;
rijndaelCipher.Padding = PaddingMode.Zeros;
rijndaelCipher.KeySize = 128;
rijndaelCipher.BlockSize = 128;
byte[] encryptedData = Convert.FromBase64String(text);
byte[] pwdBytes = System.Text.Encoding.UTF8.GetBytes(key);
byte[] keyBytes = new byte[16];
int len = pwdBytes.Length;
if (len > keyBytes.Length)
len = keyBytes.Length;
System.Array.Copy(pwdBytes, keyBytes, len);
rijndaelCipher.Key = keyBytes;
rijndaelCipher.IV = Encoding.UTF8.GetBytes(iv);
ICryptoTransform transform = rijndaelCipher.CreateDecryptor();
byte[] plainText = transform.TransformFinalBlock(encryptedData, 0, encryptedData.Length);
return Encoding.UTF8.GetString(plainText);
}

原:https://blog.csdn.net/blueplus/article/details/80512438

以上是关于对称加密AES的主要内容,如果未能解决你的问题,请参考以下文章

更新实现代码对称加密与解密剖析:AES,高级加密标准(Advanced Encryption Standard,缩写AES)

RSA非对称加密和AES对称加密

对称加密及AES加密算法

基于AES对称加密解密的代码块

PHP对称加密-AES

JDK自带方法实现AES对称加密