C#常用加密方法

来源:互联网 发布:.net cms 编辑:程序博客网 时间:2024/05/29 10:50
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    }}
0 0
原创粉丝点击