zoukankan      html  css  js  c++  java
  • c# 加密转载 备忘

    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
    
        }

    转自:http://www.cnblogs.com/malaohu/archive/2013/07/25/3214136.html

  • 相关阅读:
    对ManualResetEvent和AutoResetEvent的巩固练习
    经纬度点距离的那点儿事
    【读书笔记】C++Primer---第三章
    .NET应用程序调试—原理、工具、方法
    【读书笔记】C++Primer---第二章
    【读书笔记】C++Primer---第一章
    8 个最好的 jQuery 树形 Tree 插件
    C++中引用(&)的用法和应用实例
    自娱自乐之直接插入排序
    自娱自乐之堆排序
  • 原文地址:https://www.cnblogs.com/nanfei/p/3872425.html
Copyright © 2011-2022 走看看