암호화 해독(Base64, AES, MD5, HMACSHA256)

7582 단어 C#
/// 
        /// Base64  
        /// 
        ///       
        ///     
        /// 
        public static string EncodeBase64(string source, Encoding encode)
        {
            byte[] bytes = encode.GetBytes(source);
            return Convert.ToBase64String(bytes);
        }

        /// 
        /// Base64  
        /// 
        ///       
        /// 
        /// 
        ///   
        ///   SecurityUtil.EncodeBase64(string,Encoding)        
        public static string EncodeBase64(string source)
        {
            return EncodeBase64(source, Encoding.UTF8);
        }

        /// 
        /// Base64  
        /// 
        ///       
        ///     
        /// 
        public static string DecodeBase64(string source, Encoding encode)
        {
            string decode = "";
            byte[] bytes = Convert.FromBase64String(source);
            decode = encode.GetString(bytes);
            return decode;
        }

        /// 
        /// AES   
        /// 
        ///       
        ///     
        /// 
        /// 
        /// 
        /// 
        public static string AESEncrypt(string context, byte[] keyBytes,int keySize,int blockSize,byte[] ivBytes)
        {
            RijndaelManaged rijndaelCipher = new RijndaelManaged();

            rijndaelCipher.Mode = CipherMode.CBC;
            rijndaelCipher.Padding = PaddingMode.PKCS7;
            rijndaelCipher.KeySize = keySize;
            rijndaelCipher.BlockSize = blockSize;


            //     
            rijndaelCipher.Key = keyBytes;
            rijndaelCipher.IV = ivBytes;

            ICryptoTransform transform = rijndaelCipher.CreateEncryptor();

            byte[] plainText = Encoding.UTF8.GetBytes(context);
            byte[] cipherBytes = transform.TransformFinalBlock(plainText, 0, plainText.Length);
            return Convert.ToBase64String(cipherBytes);
        }

        /// 
        /// AES  
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        public static string AESDecrypt(string context, byte[] keyBytes, int keySize, int blockSize, byte[] ivBytes)
        {
            RijndaelManaged rijndaelCipher = new RijndaelManaged();

            rijndaelCipher.Mode = CipherMode.CBC;
            rijndaelCipher.Padding = PaddingMode.PKCS7;
            rijndaelCipher.KeySize = keySize;
            rijndaelCipher.BlockSize = blockSize;

            byte[] encryptedData = Convert.FromBase64String(context);
            rijndaelCipher.Key = keyBytes;
            rijndaelCipher.IV = ivBytes;

            ICryptoTransform transform = rijndaelCipher.CreateDecryptor();

            byte[] plainText = transform.TransformFinalBlock(encryptedData, 0, encryptedData.Length);
            return Encoding.UTF8.GetString(plainText);
        }

        //16   
        /// 
        /// MD516   
        /// 
        ///       
        ///     
        /// 
        public static string Encrypt16(string encryptData, Encoding encodingType)
        {
            byte[] bEncrypt = encodingType.GetBytes(encryptData);
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            string t2 = BitConverter.ToString(md5.ComputeHash(bEncrypt, 4, 8));
            t2 = t2.Replace("-", "");
            return t2;
        }

        //32   
        /// 
        /// MD532   (  )
        /// 
        ///       
        ///     
        /// 
        public static string Encrypt32(string encryptData, Encoding encodingType)
        {
            byte[] bEncrypt = encodingType.GetBytes(encryptData);
            byte[] bComputeHash = MD5.Create().ComputeHash(bEncrypt);
            StringBuilder sb = new StringBuilder();
            foreach (byte item in bComputeHash)
            {
                sb.Append(item.ToString("X2"));
            }
            return sb.ToString();
        }



        //32   
        /// 
        /// MD532   (  )
        /// 
        ///       
        ///     
        /// 
        public static string Encrypt32Lower(string encryptData, Encoding encodingType)
        {
            byte[] bEncrypt = encodingType.GetBytes(encryptData);
            byte[] bComputeHash = MD5.Create().ComputeHash(bEncrypt);
            StringBuilder sb = new StringBuilder();
            foreach (byte item in bComputeHash)
            {
                sb.Append(item.ToString("x2"));
            }
            return sb.ToString();
        }

        //64   
        /// 
        /// MD564   
        /// 
        ///       
        ///     
        /// 
        public static string Encrypt64(string encryptData, Encoding encodingType)
        {
            byte[] bEncrypt = encodingType.GetBytes(encryptData);
            //string pwd = "";
            MD5 md5 = MD5.Create(); //     md5  
            //              ,       UTF8/Unicode     
            byte[] s = md5.ComputeHash(bEncrypt);
            return Convert.ToBase64String(s);
        }

        /// 
        ///     str       (ASCIIEncoding.ASCII)     
        /// 
        ///       
        /// 
        public static byte[] GetBytesByASCIIEncoding(string encodingData) {
            return ASCIIEncoding.ASCII.GetBytes(encodingData);
        }

        public static byte[] GetSHA1HashBytes(byte[] encryptData) {
           return new SHA1CryptoServiceProvider().ComputeHash(encryptData);
        }

        /// 
        /// HmacSHA256  64 
        /// 
        ///      
        ///     
        /// 
        public static string HmacSHA256Encrypt64(string message,string secret) {
            return HmacSHA256Encrypt64(message,secret,new System.Text.ASCIIEncoding());
        }

        /// 
        /// HmacSHA256  64 
        /// 
        ///      
        ///     
        ///     
        /// 
        public static string HmacSHA256Encrypt64(string message, string secret,Encoding encoding)
        {
            secret = secret ?? "";
            byte[] keyByte = encoding.GetBytes(secret);
            byte[] messageBytes = encoding.GetBytes(message);
            using (var hmacsha256 = new HMACSHA256(keyByte))
            {
                byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
                return Convert.ToBase64String(hashmessage);
            }
        }

좋은 웹페이지 즐겨찾기