1. 程式人生 > >AES加解密

AES加解密

ext ole gen public 去掉 ati 默認 cal algo

 public class AESHelper
    {
        /// <summary>
        /// 獲取密鑰
        /// </summary>
        private static string IDKey
        {
            get
            {
                return "3vZ8rRLUME4b3K8xXovptGodOUXSCjrc";
            }
        }

        private static string nameKey
        {

            
get { return "1a54CRZ7WdwGYdNPonWkSMtHyRhlnv6q"; } } //默認密鑰向量 private static byte[] _key1 = { 0x7f, 0x0a, 0x2d, 0x96, 0x94, 0xa5, 0xc2, 0x7b, 0xaa, 0x89, 0x00, 0x8b, 0xf3, 0xab, 0x15, 0xfd }; /// <summary> /// AES加密算法 /// </summary>
/// <param name="plainText">明文字符串</param> /// <returns>將加密後的密文轉換為Base64編碼,以便顯示</returns> public static string AESEncryptID(string plainText) { //分組加密算法 SymmetricAlgorithm aes = Rijndael.Create(); byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//
得到需要加密的字節數組 //設置密鑰及密鑰向量 aes.Key = Encoding.UTF8.GetBytes(IDKey); aes.IV = _key1; byte[] cipherBytes = null; using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write)) { cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); cipherBytes = ms.ToArray();//得到加密後的字節數組 cs.Close(); ms.Close(); } } return Convert.ToBase64String(cipherBytes); } public static string AESEncryptName(string plainText) { //分組加密算法 SymmetricAlgorithm aes = Rijndael.Create(); byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字節數組 //設置密鑰及密鑰向量 aes.Key = Encoding.UTF8.GetBytes(nameKey); aes.IV = _key1; byte[] cipherBytes = null; using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, aes.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 AESDecryptId(string showText) { byte[] cipherText = Convert.FromBase64String(showText); SymmetricAlgorithm aes = Rijndael.Create(); aes.Key = Encoding.UTF8.GetBytes(IDKey); aes.IV = _key1; byte[] decryptBytes = new byte[cipherText.Length]; using (MemoryStream ms = new MemoryStream(cipherText)) { using (CryptoStream cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Read)) { cs.Read(decryptBytes, 0, decryptBytes.Length); cs.Close(); ms.Close(); } } return Encoding.UTF8.GetString(decryptBytes).Replace("\0", ""); ///將字符串後尾的‘\0‘去掉 } public static string AESDecryptName(string showText) { byte[] cipherText = Convert.FromBase64String(showText); SymmetricAlgorithm aes = Rijndael.Create(); aes.Key = Encoding.UTF8.GetBytes(nameKey); aes.IV = _key1; byte[] decryptBytes = new byte[cipherText.Length]; using (MemoryStream ms = new MemoryStream(cipherText)) { using (CryptoStream cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Read)) { cs.Read(decryptBytes, 0, decryptBytes.Length); cs.Close(); ms.Close(); } } return Encoding.UTF8.GetString(decryptBytes).Replace("\0", ""); ///將字符串後尾的‘\0‘去掉 } public static void genKey() { var generator = new RijndaelManaged(); var key = Convert.ToBase64String(generator.Key); byte[] iv = generator.IV; Console.WriteLine(key); Console.WriteLine(generator.IV); } }

Key:為32位的字符

 byte:0-255之間的16進制數字

AES加解密