• 加密解密


      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Security.Cryptography;
      6 using System.IO;
      7 
      8 namespace 加密解密
      9 {
     10 
     11     public sealed class EncryptUtils
     12     {
     13         #region Base64加密解密
     14         /// <summary>
     15         /// Base64加密
     16         /// </summary>
     17         /// <param name="input">需要加密的字符串</param>
     18         /// <returns></returns>
     19         public static string Base64Encrypt(string input)
     20         {
     21             return Base64Encrypt(input, new UTF8Encoding());
     22         }
     23 
     24         /// <summary>
     25         /// Base64加密
     26         /// </summary>
     27         /// <param name="input">需要加密的字符串</param>
     28         /// <param name="encode">字符编码</param>
     29         /// <returns></returns>
     30         public static string Base64Encrypt(string input, Encoding encode)
     31         {
     32             return Convert.ToBase64String(encode.GetBytes(input));
     33         }
     34 
     35         /// <summary>
     36         /// Base64解密
     37         /// </summary>
     38         /// <param name="input">需要解密的字符串</param>
     39         /// <returns></returns>
     40         public static string Base64Decrypt(string input)
     41         {
     42             return Base64Decrypt(input, new UTF8Encoding());
     43         }
     44 
     45         /// <summary>
     46         /// Base64解密
     47         /// </summary>
     48         /// <param name="input">需要解密的字符串</param>
     49         /// <param name="encode">字符的编码</param>
     50         /// <returns></returns>
     51         public static string Base64Decrypt(string input, Encoding encode)
     52         {
     53             return encode.GetString(Convert.FromBase64String(input));
     54         }
     55         #endregion
     56 
     57         #region DES加密解密
     58         /// <summary>
     59         /// DES加密
     60         /// </summary>
     61         /// <param name="data">加密数据</param>
     62         /// <param name="key">8位字符的密钥字符串</param>
     63         /// <param name="iv">8位字符的初始化向量字符串</param>
     64         /// <returns></returns>
     65         public static string DESEncrypt(string data, string key, string iv)
     66         {
     67             byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
     68             byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
     69 
     70             DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
     71             int i = cryptoProvider.KeySize;
     72             MemoryStream ms = new MemoryStream();
     73             CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
     74 
     75             StreamWriter sw = new StreamWriter(cst);
     76             sw.Write(data);
     77             sw.Flush();
     78             cst.FlushFinalBlock();
     79             sw.Flush();
     80             return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
     81         }
     82 
     83         /// <summary>
     84         /// DES解密
     85         /// </summary>
     86         /// <param name="data">解密数据</param>
     87         /// <param name="key">8位字符的密钥字符串(需要和加密时相同)</param>
     88         /// <param name="iv">8位字符的初始化向量字符串(需要和加密时相同)</param>
     89         /// <returns></returns>
     90         public static string DESDecrypt(string data, string key, string iv)
     91         {
     92             byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
     93             byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
     94 
     95             byte[] byEnc;
     96             try
     97             {
     98                 byEnc = Convert.FromBase64String(data);
     99             }
    100             catch
    101             {
    102                 return null;
    103             }
    104 
    105             DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
    106             MemoryStream ms = new MemoryStream(byEnc);
    107             CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
    108             StreamReader sr = new StreamReader(cst);
    109             return sr.ReadToEnd();
    110         }
    111         #endregion
    112 
    113         #region MD5加密
    114         /// <summary>
    115         /// MD5加密
    116         /// </summary>
    117         /// <param name="input">需要加密的字符串</param>
    118         /// <returns></returns>
    119         public static string MD5Encrypt(string input)
    120         {
    121             return MD5Encrypt(input, new UTF8Encoding());
    122         }
    123 
    124         /// <summary>
    125         /// MD5加密
    126         /// </summary>
    127         /// <param name="input">需要加密的字符串</param>
    128         /// <param name="encode">字符的编码</param>
    129         /// <returns></returns>
    130         public static string MD5Encrypt(string input, Encoding encode)
    131         {
    132             MD5 md5 = new MD5CryptoServiceProvider();
    133             byte[] t = md5.ComputeHash(encode.GetBytes(input));
    134             StringBuilder sb = new StringBuilder(32);
    135             for (int i = 0; i < t.Length; i++)
    136                 sb.Append(t[i].ToString("x").PadLeft(2, '0'));
    137             return sb.ToString();
    138         }
    139 
    140         /// <summary>
    141         /// MD5对文件流加密
    142         /// </summary>
    143         /// <param name="sr"></param>
    144         /// <returns></returns>
    145         public static string MD5Encrypt(Stream stream)
    146         {
    147             MD5 md5serv = MD5CryptoServiceProvider.Create();
    148             byte[] buffer = md5serv.ComputeHash(stream);
    149             StringBuilder sb = new StringBuilder();
    150             foreach (byte var in buffer)
    151                 sb.Append(var.ToString("x2"));
    152             return sb.ToString();
    153         }
    154 
    155         /// <summary>
    156         /// MD5加密(返回16位加密串)
    157         /// </summary>
    158         /// <param name="input"></param>
    159         /// <param name="encode"></param>
    160         /// <returns></returns>
    161         public static string MD5Encrypt16(string input, Encoding encode)
    162         {
    163             MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
    164             string result = BitConverter.ToString(md5.ComputeHash(encode.GetBytes(input)), 4, 8);
    165             result = result.Replace("-", "");
    166             return result;
    167         }
    168         #endregion
    169 
    170         #region 3DES 加密解密
    171 
    172         public static string DES3Encrypt(string data, string key)
    173         {
    174             TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
    175 
    176             DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
    177             DES.Mode = CipherMode.CBC;
    178             DES.Padding = PaddingMode.PKCS7;
    179 
    180             ICryptoTransform DESEncrypt = DES.CreateEncryptor();
    181 
    182             byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(data);
    183             return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
    184         }
    185 
    186         public static string DES3Decrypt(string data, string key)
    187         {
    188             TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
    189 
    190             DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
    191             DES.Mode = CipherMode.CBC;
    192             DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
    193 
    194             ICryptoTransform DESDecrypt = DES.CreateDecryptor();
    195 
    196             string result = "";
    197             try
    198             {
    199                 byte[] Buffer = Convert.FromBase64String(data);
    200                 result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
    201             }
    202             catch (Exception e)
    203             {
    204 
    205             }
    206             return result;
    207         }
    208 
    209         #endregion
    210     }
    211 }
  • 相关阅读:
    Mysql查询正在运行的事务
    linux SVN添加新用户
    linux下安装php扩展amqp
    解决apache启动错误:Could not reliably determine the server's fully qualified domain name
    linux系统安装redis服务器与php redis扩展
    navicat导出数据库字典
    centos安装GD库失败
    Mysql实现主从同步
    计算机的本质
    windows下nginx访问web目录提示403 Forbidden
  • 原文地址:https://www.cnblogs.com/ChineseMoonGod/p/5203941.html
Copyright © 2020-2023  润新知