zoukankan      html  css  js  c++  java
  • C#常用加密方法

    using System;
    using System.IO;
    using System.Security.Cryptography;
    using System.Text;
     
    /// <summary>
    /// Encrypt 的摘要说明
    /// </summary>
    public static class Encrypt
    {
        #region 解密由AES加密的字符串
        /// <summary>
        /// 解密由AES加密的字符串
        /// </summary>
        /// <param name="source">加密字符串</param>
        /// <param name="key">加密密钥</param>
        /// <returns>解密后的字符串</returns>
        public static string Dencrypt_AES(string source, string key)
        {
            try
            {
                Rijndael rijndael = Rijndael.Create();
                rijndael.Key = Encoding.Default.GetBytes(key);
                rijndael.IV = Encoding.Default.GetBytes(key.Substring(0, 0x10));
                byte[] buffer = Convert.FromBase64String(source);
                MemoryStream stream = new MemoryStream();
                CryptoStream stream2 = new CryptoStream(stream, rijndael.CreateDecryptor(), CryptoStreamMode.Write);
                stream2.Write(buffer, 0, buffer.Length);
                stream2.FlushFinalBlock();
                return Encoding.Default.GetString(stream.ToArray());
            }
            catch
            {
                return null;
            }
        }
        #endregion
     
        #region 解密由DES加密的字符串
        /// <summary>
        /// 解密由DES加密的字符串
        /// </summary>
        /// <param name="source">加密的字符串</param>
        /// <param name="key">加密的密钥</param>
        /// <returns>解密后的字符串</returns>
        public static string Dencrypt_DES(string source, string key)
        {
            try
            {
                DESCryptoServiceProvider provider2 = new DESCryptoServiceProvider
                {
                    Key = Encoding.Default.GetBytes(key),
                    IV = Encoding.Default.GetBytes(key)
                };
                DESCryptoServiceProvider provider = provider2;
                byte[] buffer = Convert.FromBase64String(source);
                MemoryStream stream = new MemoryStream();
                CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write);
                stream2.Write(buffer, 0, buffer.Length);
                stream2.FlushFinalBlock();
                return Encoding.Default.GetString(stream.ToArray());
            }
            catch
            {
                return null;
            }
        }
        #endregion
     
        #region 解密由RC2加密的字符串
        /// <summary>
        /// 解密由RC2加密的字符串
        /// </summary>
        /// <param name="source">加密的字符串</param>
        /// <param name="key">加密的密钥</param>
        /// <returns>解密后的字符串</returns>
        public static string DEncrypt_RC2(string source, string key)
        {
            try
            {
                RC2CryptoServiceProvider provider2 = new RC2CryptoServiceProvider
                {
                    Key = Encoding.Default.GetBytes(key),
                    IV = Encoding.Default.GetBytes(key)
                };
                RC2CryptoServiceProvider provider = provider2;
                byte[] buffer = Convert.FromBase64String(source);
                MemoryStream stream = new MemoryStream();
                CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write);
                stream2.Write(buffer, 0, buffer.Length);
                stream2.FlushFinalBlock();
                return Encoding.Default.GetString(stream.ToArray());
            }
            catch
            {
                return null;
            }
        }
        #endregion
     
        #region 解密由TripleDES加密的字符串
        /// <summary>
        /// 解密由TripleDES加密的字符串
        /// </summary>
        /// <param name="source">加密的字符串</param>
        /// <param name="key">加密的密钥</param>
        /// <returns>解密后的字符串</returns>
        public static string Dencrypt_TripleDES(string source, string key)
        {
            try
            {
                TripleDESCryptoServiceProvider provider2 = new TripleDESCryptoServiceProvider
                {
                    Key = Encoding.Default.GetBytes(key),
                    IV = Encoding.Default.GetBytes(key.Substring(0, 8))
                };
                TripleDESCryptoServiceProvider provider = provider2;
                byte[] buffer = Convert.FromBase64String(source);
                MemoryStream stream = new MemoryStream();
                CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write);
                stream2.Write(buffer, 0, buffer.Length);
                stream2.FlushFinalBlock();
                return Encoding.Default.GetString(stream.ToArray());
            }
            catch
            {
                return null;
            }
        }
        #endregion
     
        #region 使用AES方式进行加密
        /// <summary>
        /// 使用AES方式进行加密
        /// </summary>
        /// <param name="source">需要加密的字符串</param>
        /// <param name="key">加密用的密钥</param>
        /// <returns>加密后的字符串</returns>
        public static string Encrypt_AES(string source, string key)
        {
            try
            {
                Rijndael rijndael = Rijndael.Create();
                rijndael.Key = Encoding.Default.GetBytes(key);
                rijndael.IV = Encoding.Default.GetBytes(key.Substring(0, 0x10));
                byte[] bytes = Encoding.Default.GetBytes(source);
                MemoryStream stream = new MemoryStream();
                CryptoStream stream2 = new CryptoStream(stream, rijndael.CreateEncryptor(), CryptoStreamMode.Write);
                stream2.Write(bytes, 0, bytes.Length);
                stream2.FlushFinalBlock();
                return Convert.ToBase64String(stream.ToArray());
            }
            catch
            {
                return null;
            }
        }
        #endregion
     
        #region 使用DES方式进行加密
        /// <summary>
        /// 使用DES方式进行加密
        /// </summary>
        /// <param name="source">需要加密的字符串</param>
        /// <param name="key">加密用的密钥</param>
        /// <returns>加密后的字符串</returns>
        public static string Encrypt_DES(string source, string key)
        {
            try
            {
                DESCryptoServiceProvider provider2 = new DESCryptoServiceProvider
                {
                    Key = Encoding.Default.GetBytes(key),
                    IV = Encoding.Default.GetBytes(key)
                };
                DESCryptoServiceProvider provider = provider2;
                byte[] bytes = Encoding.Default.GetBytes(source);
                MemoryStream stream = new MemoryStream();
                CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(), CryptoStreamMode.Write);
                stream2.Write(bytes, 0, bytes.Length);
                stream2.FlushFinalBlock();
                return Convert.ToBase64String(stream.ToArray());
            }
            catch
            {
                return null;
            }
        }
        #endregion
     
        #region 使用MD5方式进行加密
        /// <summary>
        /// 使用MD5方式进行加密
        /// </summary>
        /// <param name="source">需要加密的字符串</param>
        /// <param name="key">加密用的密钥</param>
        /// <returns>加密后的字符串</returns>
        public static string Encrypt_MD5(string source)
        {
            string str = "";
            MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
            byte[] bytes = Encoding.Default.GetBytes(source);
            byte[] buffer2 = provider.ComputeHash(bytes);
            foreach (byte num in buffer2)
            {
                str = str + num.ToString("X").PadLeft(2, '0');
            }
            return str;
        }
        #endregion
     
        #region 使用RC2方式进行加密
        /// <summary>
        /// 使用RC2方式进行加密
        /// </summary>
        /// <param name="source">需要加密的字符串</param>
        /// <param name="key">加密用的密钥</param>
        /// <returns>加密后的字符串</returns>
        public static string Encrypt_RC2(string source, string key)
        {
            try
            {
                RC2CryptoServiceProvider provider2 = new RC2CryptoServiceProvider
                {
                    Key = Encoding.Default.GetBytes(key),
                    IV = Encoding.Default.GetBytes(key)
                };
                RC2CryptoServiceProvider provider = provider2;
                byte[] bytes = Encoding.Default.GetBytes(source);
                MemoryStream stream = new MemoryStream();
                CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(), CryptoStreamMode.Write);
                stream2.Write(bytes, 0, bytes.Length);
                stream2.FlushFinalBlock();
                return Convert.ToBase64String(stream.ToArray());
            }
            catch
            {
                return null;
            }
        }
        #endregion
     
        #region 使用TripleDES方式进行加密
        /// <summary>
        /// 使用TripleDES方式进行加密
        /// </summary>
        /// <param name="source">需要加密的字符串</param>
        /// <param name="key">加密用的密钥</param>
        /// <returns>加密后的字符串</returns>
        public static string Encrypt_TripleDES(string source, string key)
        {
            try
            {
                TripleDESCryptoServiceProvider provider2 = new TripleDESCryptoServiceProvider
                {
                    Key = Encoding.Default.GetBytes(key),
                    IV = Encoding.Default.GetBytes(key.Substring(0, 8))
                };
                TripleDESCryptoServiceProvider provider = provider2;
                byte[] bytes = Encoding.Default.GetBytes(source);
                MemoryStream stream = new MemoryStream();
                CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(), CryptoStreamMode.Write);
                stream2.Write(bytes, 0, bytes.Length);
                stream2.FlushFinalBlock();
                return Convert.ToBase64String(stream.ToArray());
            }
            catch
            {
                return null;
            }
        }
        #endregion
     
        #region 获取加密的密钥
        /// <summary>
        /// 获取加密的密钥
        /// </summary>
        /// <param name="EncryptType">加密方式</param>
        /// <returns>密钥</returns>
        public static string GetKey(EncryptType encryptType)
        {
            switch (encryptType)
            {
                case EncryptType.AES:
                    return "1zx2fqw3eas4dtg8hui9opl6dfh5aok0";
     
                case EncryptType.DES:
                    return "zxc52mxb";
     
                case EncryptType.TDES:
                    return "zxc52mxbqwdftghu24dfhji0";
     
                case EncryptType.RC2:
                    return "qwedfgbd";
            }
            return "";
        }
        #endregion
     
        public enum EncryptType:byte
        {
            AES,
            DES,
            TDES,
            RC2
        }
    }
  • 相关阅读:
    HDU 2544 最短路
    Codeforces Round #588 (Div. 2) D. Marcin and Training Camp
    Codeforces Round #590 (Div. 3) B2. Social Network (hard version)
    Codeforces Round #585 (Div. 2) B. The Number of Products
    MongoDB基本概念
    MongoDB基本命令
    MongoDB常见问题
    MongoDB副本集
    Zookeeper Java 客户端
    MongoDB安装
  • 原文地址:https://www.cnblogs.com/apollokk/p/6713886.html
Copyright © 2011-2022 走看看