程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> 加密解密

加密解密

編輯:C#基礎知識
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Security.Cryptography;
 using System.IO;
 
 namespace 加密解密
 {
 
     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
     }
 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved