zoukankan      html  css  js  c++  java
  • C# 加密解密(DES,3DES,MD5,Base64) 类

    public sealed class EncryptUtils
        {
            #region 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));
            }
     
            /// <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));
            }
            #endregion
     
            #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();
            }
            #endregion
     
            #region MD5加密
            /// <summary>
            /// MD5加密
            /// </summary>
            /// <param name="input">需要加密的字符串</param>
            /// <returns></returns>
            public static string MD5Encrypt(string input)
            {
                return MD5Encrypt(input, new UTF8Encoding());
            }
     
            /// <summary>
            /// MD5加密
            /// </summary>
            /// <param name="input">需要加密的字符串</param>
            /// <param name="encode">字符的编码</param>
            /// <returns></returns>
            public static string MD5Encrypt(string input, Encoding encode)
            {
                MD5 md5 = new MD5CryptoServiceProvider();
                byte[] t = md5.ComputeHash(encode.GetBytes(input));
                StringBuilder sb = new StringBuilder(32);
                for (int i = 0; i < t.Length; i++)
                    sb.Append(t[i].ToString("x").PadLeft(2, '0'));
                return sb.ToString();
            }
     
            /// <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();
            }
     
            /// <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;
            }
            #endregion
     
            #region 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;
            }
     
            #endregion
        }
  • 相关阅读:
    建设全功能团队
    gwt之mvc4g
    SQLServer代码差异备份
    DateTimePicker选择到秒
    SQL定时备份并删除过期备份
    Div文本垂直居中
    WinForm当前窗口抓图
    web架构设计经验分享(转)
    用yui compressor 压缩 javascirpt脚本
    查看sqlserver连接数
  • 原文地址:https://www.cnblogs.com/ShoneH/p/4773611.html
Copyright © 2011-2022 走看看