c# 加密转载 备忘

md5:

方法1:引用 system.web.dll

FormsAuthentication.HashPasswordForStoringInConfigFile("123456", "md5")

方法2:

复制代码
public static string Md5(string input)
{
    var md5 = new MD5CryptoServiceProvider();
    var hash = md5.ComputeHash(Encoding.UTF8.GetBytes(input));
    var sb = new StringBuilder(32);
    for (int i = 0; i < hash.Length; i++)
        sb.Append(hash[i].ToString("x").PadLeft(2, '0'));
    return sb.ToString();
}
复制代码

MD5对文件流加密:

复制代码
/// <summary>

        /// MD5对文件流加密

        /// </summary>

        /// <param name="sr"></param>

        /// <returns></returns>

        public static string MD5Encrypt(Stream stream)

        {

            MD5 md5serv = MD5CryptoServiceProvider.Create();

            byte[] buffer = md5serv.ComputeHash(stream);

            StringBuilder sb = new StringBuilder();

            foreach (byte var in buffer)

                sb.Append(var.ToString("x2"));

            return sb.ToString();

        }
View Code
复制代码

MD5的16位加密,默认是32位:

复制代码
/// <summary>

        /// MD5加密(返回16位加密串)

        /// </summary>

        /// <param name="input"></param>

        /// <param name="encode"></param>

        /// <returns></returns>

        public static string MD5Encrypt16(string input, Encoding encode)

        {

            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

            string result = BitConverter.ToString(md5.ComputeHash(encode.GetBytes(input)), 4, 8);

            result = result.Replace("-", "");

            return result;

        }
View Code
复制代码

BASE64编码与解码:

复制代码
 /// <summary>

        /// Base64加密

        /// </summary>

        /// <param name="input">需要加密的字符串</param>

        /// <returns></returns>

        public static string Base64Encrypt(string input)

        {

            return Base64Encrypt(input, new UTF8Encoding());

        }

 

        /// <summary>

        /// Base64加密

        /// </summary>

        /// <param name="input">需要加密的字符串</param>

        /// <param name="encode">字符编码</param>

        /// <returns></returns>

        public static string Base64Encrypt(string input, Encoding encode)

        {

            return Convert.ToBase64String(encode.GetBytes(input));

        }
View Code
复制代码
复制代码
/// <summary>

        /// Base64解密

        /// </summary>

        /// <param name="input">需要解密的字符串</param>

        /// <returns></returns>

        public static string Base64Decrypt(string input)

        {

            return Base64Decrypt(input, new UTF8Encoding());

        }

 

        /// <summary>

        /// Base64解密

        /// </summary>

        /// <param name="input">需要解密的字符串</param>

        /// <param name="encode">字符的编码</param>

        /// <returns></returns>

        public static string Base64Decrypt(string input, Encoding encode)

        {

            return encode.GetString(Convert.FromBase64String(input));

        }
View Code
复制代码

DES加密解密:

复制代码
#region DES加密解密

        /// <summary>

        /// DES加密

        /// </summary>

        /// <param name="data">加密数据</param>

        /// <param name="key">8位字符的密钥字符串</param>

        /// <param name="iv">8位字符的初始化向量字符串</param>

        /// <returns></returns>

        public static string DESEncrypt(string data, string key, string iv)

        {

            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);

            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);

 

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

            int i = cryptoProvider.KeySize;

            MemoryStream ms = new MemoryStream();

            CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);

 

            StreamWriter sw = new StreamWriter(cst);

            sw.Write(data);

            sw.Flush();

            cst.FlushFinalBlock();

            sw.Flush();

            return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);

        }

 

        /// <summary>

        /// DES解密

        /// </summary>

        /// <param name="data">解密数据</param>

        /// <param name="key">8位字符的密钥字符串(需要和加密时相同)</param>

        /// <param name="iv">8位字符的初始化向量字符串(需要和加密时相同)</param>

        /// <returns></returns>

        public static string DESDecrypt(string data, string key, string iv)

        {

            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);

            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);

 

            byte[] byEnc;

            try

            {

                byEnc = Convert.FromBase64String(data);

            }

            catch

            {

                return null;

            }

 

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

            MemoryStream ms = new MemoryStream(byEnc);

            CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);

            StreamReader sr = new StreamReader(cst);

            return sr.ReadToEnd();

        }
View Code
复制代码

3DES 加密解密:

复制代码
public static string DES3Encrypt(string data, string key)

        {

            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();

 

            DES.Key = ASCIIEncoding.ASCII.GetBytes(key);

            DES.Mode = CipherMode.CBC;

            DES.Padding = PaddingMode.PKCS7;

 

            ICryptoTransform DESEncrypt = DES.CreateEncryptor();

 

            byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(data);

            return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));

        }

 

        public static string DES3Decrypt(string data, string key)

        {

            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();

 

            DES.Key = ASCIIEncoding.ASCII.GetBytes(key);

            DES.Mode = CipherMode.CBC;

            DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;

 

            ICryptoTransform DESDecrypt = DES.CreateDecryptor();

 

            string result = "";

            try

            {

                byte[] Buffer = Convert.FromBase64String(data);

                result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));

            }

            catch (Exception e)

            {

 

            }

            return result;

        }
View Code
复制代码

参考网址:http://www.cnblogs.com/malaohu/archive/2013/07/25/3214136.html

posted on   空明流光  阅读(217)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示