Пример #1
0
        /// <summary>
        /// AES解密base64字符串并获得结果(AES decrypts the base64 string and gets the result)
        /// </summary>
        /// <param name="input">解密字符串</param>
        /// <param name="key">AES KEY</param>
        /// <param name="iv">AES IV</param>
        /// <param name="cipherMode">密码模式</param>
        /// <param name="paddingMode">填充模式</param>
        /// <returns></returns>
        public static string AESDecryptFromBase64(string input, string key, string iv = "", AesCipherMode cipherMode = AesCipherMode.CBC, AesPaddingMode paddingMode = AesPaddingMode.PKCS7Padding)
        {
            var bytes = Convert.FromBase64String(input);

            return(AESDecryptFromBytes(bytes, key, iv, cipherMode, paddingMode));
        }
Пример #2
0
        /// <summary>
        /// AES解密十六进制字符串并获得结果(AES decrypts the hex string and gets the result)
        /// </summary>
        /// <param name="input">解密字符串</param>
        /// <param name="key">AES KEY</param>
        /// <param name="iv">AES IV</param>
        /// <param name="cipherMode">密码模式</param>
        /// <param name="paddingMode">填充模式</param>
        /// <returns></returns>
        public static string AESDecryptFromHex(string input, string key, string iv = null, AesCipherMode cipherMode = AesCipherMode.CBC, AesPaddingMode paddingMode = AesPaddingMode.PKCS7Padding)
        {
            var bytes = new byte[input.Length / 2];

            for (int index = 0; index < input.Length / 2; index++)
            {
                var @char = input.Substring(index * 2, 2);
                bytes[index] = Convert.ToByte(@char, 16);
            }
            return(AESDecryptFromBytes(bytes, key, iv, cipherMode, paddingMode));
        }
Пример #3
0
        /// <summary>
        /// AES加密字符串并获得十六进制字符串结果(AES encrypts the string and gets the hex string result)
        /// </summary>
        /// <param name="input">加密字符串</param>
        /// <param name="key">AES KEY</param>
        /// <param name="iv">AES IV</param>
        /// <param name="cipherMode">密码模式</param>
        /// <param name="paddingMode">填充模式</param>
        /// <returns></returns>
        public static string AESEncryptToHex(string input, string key, string iv = null, AesCipherMode cipherMode = AesCipherMode.CBC, AesPaddingMode paddingMode = AesPaddingMode.PKCS7Padding)
        {
            var bytes = AESEncryptToBtyes(input, key, iv, cipherMode, paddingMode);

            var builder = new StringBuilder();

            foreach (var @byte in bytes)
            {
                builder.AppendFormat("{0:x2}", @byte);
            }

            return(builder.ToString());
        }
Пример #4
0
        /// <summary>
        /// AES解密字节数组并获得结果(AES decrypts the byte array and gets the result)
        /// </summary>
        /// <param name="input">字节数组</param>
        /// <param name="key">AES KEY</param>
        /// <param name="iv">AES IV</param>
        /// <param name="cipherMode">密码模式</param>
        /// <param name="paddingMode">填充模式</param>
        /// <returns></returns>
        public static string AESDecryptFromBytes(byte[] input, string key, string iv = null, AesCipherMode cipherMode = AesCipherMode.CBC, AesPaddingMode paddingMode = AesPaddingMode.PKCS7Padding)
        {
            //AES 加密算法
            var algorithm = string.Format("{0}/{1}/{2}", "AES", cipherMode.ToString(), paddingMode.GetDescription());
            //AES 算法实例
            var cipher = CipherUtilities.GetCipher(algorithm);

            //ECB模式下 传入IV无效
            if (cipherMode == AesCipherMode.ECB)
            {
                iv = null;
            }

            if (string.IsNullOrWhiteSpace(iv))
            {
                cipher.Init(false, ParameterUtilities.CreateKeyParameter("AES", Encoding.UTF8.GetBytes(key)));
            }
            else
            {
                cipher.Init(false, new ParametersWithIV(ParameterUtilities.CreateKeyParameter("AES", Encoding.UTF8.GetBytes(key)), Encoding.UTF8.GetBytes(iv)));
            }

            var bytes = cipher.DoFinal(input);

            return(Encoding.UTF8.GetString(bytes));
        }
Пример #5
0
        /// <summary>
        /// AES加密字符串并获得base64字符串结果(AES encrypts the string and gets the base64 string result)
        /// </summary>
        /// <param name="input">加密字符串</param>
        /// <param name="key">AES KEY</param>
        /// <param name="iv">AES IV</param>
        /// <param name="cipherMode">密码模式</param>
        /// <param name="paddingMode">填充模式</param>
        /// <returns></returns>
        public static string AESEncryptToBase64(string input, string key, string iv = null, AesCipherMode cipherMode = AesCipherMode.CBC, AesPaddingMode paddingMode = AesPaddingMode.PKCS7Padding)
        {
            var bytes = AESEncryptToBtyes(input, key, iv, cipherMode, paddingMode);

            return(Convert.ToBase64String(bytes));
        }