zoukankan      html  css  js  c++  java
  • C#加密算法总结

    C#加密算法总结

    MD5加密

     1         /// <summary>
     2         /// MD5加密
     3         /// </summary>
     4         /// <param name="strPwd">原字符串</param>
     5         /// <returns>加密后字符串</returns>
     6         public static string GetMD5(string strPwd)
     7         {
     8             //MD5 对象创建的两种方式
     9             //MD5 md5 = MD5.Create();
    10             MD5 md5 = new MD5CryptoServiceProvider();
    11             //将输入的密码转换成字节数组
    12             byte[] bPwd = Encoding.UTF8.GetBytes(strPwd);    
    13             //计算指定字节数组的哈希值
    14             byte[] bMD5 = md5.ComputeHash(bPwd);
    15             //释放加密服务提供类的所有资源
    16             md5.Clear();   
    17             StringBuilder sbMD5Pwd = new StringBuilder();
    18             for (int i = 0; i < bMD5.Length; i++)
    19             {
    20                 //将每个字节数据转换为2位的16进制的字符
    21                 sbMD5Pwd.Append(bMD5[i].ToString("x2"));
    22             }
    23             return sbMD5Pwd.ToString();
    24         }

    SHA1加密

     1         /// <summary>
     2         /// 使用 SHA1 加密算法来加密
     3         /// </summary>
     4         /// <param name="sourceString">原字符串</param>
     5         /// <returns>加密后字符串</returns>
     6         public static string SHA1_Encrypt(string sourceString)
     7         {
     8             byte[] StrRes = Encoding.UTF8.GetBytes(sourceString);
     9             HashAlgorithm iSHA = new SHA1CryptoServiceProvider();
    10             StrRes = iSHA.ComputeHash(StrRes);
    11             StringBuilder EnText = new StringBuilder();
    12             foreach (byte iByte in StrRes)
    13             {
    14                 EnText.AppendFormat("{0:x2}", iByte);
    15             }
    16             return EnText.ToString();
    17         }

    SHA256加密

     1         /// <summary>
     2         /// SHA256 加密
     3         /// </summary>
     4         /// <param name="sourceString">原字符串</param>
     5         /// <returns>加密后字符串</returns>
     6         public static string SHA256_Encrypt(string sourceString)
     7         {
     8             byte[] data = Encoding.UTF8.GetBytes(sourceString);
     9             SHA256 shaM = SHA256.Create();
    10             byte[] result = shaM.ComputeHash(data);
    11             StringBuilder EnText = new StringBuilder();
    12             foreach (byte iByte in result)
    13             {
    14                 EnText.AppendFormat("{0:x2}", iByte);
    15             }
    16             return EnText.ToString();
    17         }

    SHA384加密

     1         /// <summary>
     2         /// SHA384 加密
     3         /// </summary>
     4         /// <param name="sourceString">原字符串</param>
     5         /// <returns>加密后字符串</returns>
     6         public static string SHA384_Encrypt(string sourceString)
     7         {
     8             byte[] data = Encoding.UTF8.GetBytes(sourceString);
     9             SHA384 shaM = SHA384.Create();
    10             byte[] result = shaM.ComputeHash(data);
    11             StringBuilder EnText = new StringBuilder();
    12             foreach (byte iByte in result)
    13             {
    14                 EnText.AppendFormat("{0:x2}", iByte);
    15             }
    16             return EnText.ToString();
    17         }

    SHA512加密

     

     1         /// <summary>
     2         /// SHA512_加密
     3         /// </summary>
     4         /// <param name="sourceString">原字符串</param>
     5         /// <returns>加密后字符串</returns>
     6         public static string SHA512_Encrypt(string sourceString)
     7         {
     8             byte[] data = Encoding.UTF8.GetBytes(sourceString);
     9             SHA512 shaM = new SHA512Managed();
    10             byte[] result = shaM.ComputeHash(data);
    11             StringBuilder EnText = new StringBuilder();
    12             foreach (byte iByte in result)
    13             {
    14                 EnText.AppendFormat("{0:x2}", iByte);
    15             }
    16             return EnText.ToString();
    17         }

     

    AES加密、解密

     

     1         /// <summary>
     2         /// AES加密
     3         /// </summary>
     4         /// <param name="encryptStr">加密字符串</param>
     5         /// <param name="encryptKey">密钥</param>
     6         /// <returns>密码</returns>
     7         public static string AESEncrypt(string encryptStr, string encryptKey)
     8         {
     9             if (string.IsNullOrWhiteSpace(encryptStr))
    10                 return string.Empty;
    11 
    12             encryptKey = StringHelper.SubString(encryptKey, 32);
    13             encryptKey = encryptKey.PadRight(32, ' ');
    14 
    15             //分组加密算法
    16             SymmetricAlgorithm des = Rijndael.Create();
    17             byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptStr);//得到需要加密的字节数组 
    18             //设置密钥及密钥向量
    19             des.Key = Encoding.UTF8.GetBytes(encryptKey);
    20             des.IV = _aeskeys;
    21             byte[] cipherBytes = null;
    22             using (MemoryStream ms = new MemoryStream())
    23             {
    24                 using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
    25                 {
    26                     cs.Write(inputByteArray, 0, inputByteArray.Length);
    27                     cs.FlushFinalBlock();
    28                     cipherBytes = ms.ToArray();//得到加密后的字节数组
    29                     cs.Close();
    30                     ms.Close();
    31                 }
    32             }
    33             return Convert.ToBase64String(cipherBytes);
    34         }
    35 
    36         /// <summary>
    37         /// AES解密
    38         /// </summary>
    39         /// <param name="decryptStr">解密字符串</param>
    40         /// <param name="decryptKey">密钥</param>
    41         /// <returns>原码</returns>
    42         public static string AESDecrypt(string decryptStr, string decryptKey)
    43         {
    44             if (string.IsNullOrWhiteSpace(decryptStr))
    45                 return string.Empty;
    46 
    47             decryptKey = StringHelper.SubString(decryptKey, 32);
    48             decryptKey = decryptKey.PadRight(32, ' ');
    49 
    50             byte[] cipherText = Convert.FromBase64String(decryptStr);
    51 
    52             SymmetricAlgorithm des = Rijndael.Create();
    53             des.Key = Encoding.UTF8.GetBytes(decryptKey);
    54             des.IV = _aeskeys;
    55             byte[] decryptBytes = new byte[cipherText.Length];
    56             using (MemoryStream ms = new MemoryStream(cipherText))
    57             {
    58                 using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read))
    59                 {
    60                     cs.Read(decryptBytes, 0, decryptBytes.Length);
    61                     cs.Close();
    62                     ms.Close();
    63                 }
    64             }
    65             return Encoding.UTF8.GetString(decryptBytes).Replace("", "");//将字符串后尾的''去掉
    66         }

     

    DES加密

      

     1         /// <summary>
     2         /// DES加密字符串
     3         /// </summary>
     4         /// <param name="encryptString">待加密的字符串</param>
     5         /// <param name="encryptKey">加密密钥,要求为8位</param>
     6         /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
     7         public string EncryptDES(string encryptString, string encryptKey)
     8         {
     9             try
    10             {
    11                 byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
    12                 byte[] rgbIV = Keys;
    13                 byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
    14                 DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
    15                 MemoryStream mStream = new MemoryStream();
    16                 CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
    17                 cStream.Write(inputByteArray, 0, inputByteArray.Length);
    18                 cStream.FlushFinalBlock();
    19                 return Convert.ToBase64String(mStream.ToArray());
    20             }
    21             catch
    22             {
    23                 return encryptString;
    24             }
    25         }
    26 
    27         /// <summary>
    28         /// DES解密字符串
    29         /// </summary>
    30         /// <param name="decryptString">待解密的字符串</param>
    31         /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
    32         /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
    33         public string DecryptDES(string decryptString, string decryptKey)
    34         {
    35             try
    36             {
    37                 byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
    38                 byte[] rgbIV = Keys;
    39                 byte[] inputByteArray = Convert.FromBase64String(decryptString);
    40                 DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
    41                 MemoryStream mStream = new MemoryStream();
    42                 CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
    43                 cStream.Write(inputByteArray, 0, inputByteArray.Length);
    44                 cStream.FlushFinalBlock();
    45                 return Encoding.UTF8.GetString(mStream.ToArray());
    46             }
    47             catch
    48             {
    49                 return decryptString;
    50             }
    51         }

    加密方法封装代码:

      1 using System.IO;
      2 using System.Security.Cryptography;
      3 using System.Text;
      4 
      5 namespace EncryptTools
      6 {
      7     public class EncryptHelper
      8     {
      9         /// <summary>
     10         /// 获取某个哈希算法对应下的哈希值
     11         /// </summary>
     12         /// <param name="sourceString">源字符串</param>
     13         /// <param name="algorithm">哈希算法</param>
     14         /// <returns>经过计算的哈希值</returns>
     15         private static string GetHash(string sourceString, HashAlgorithm algorithm)
     16         {
     17             byte[] sourceBytes = Encoding.UTF8.GetBytes(sourceString);
     18             byte[] result = algorithm.ComputeHash(sourceBytes);
     19             algorithm.Clear();
     20             StringBuilder sb = new StringBuilder(32);
     21             for (int i = 0; i < result.Length; i++)
     22             {
     23                 sb.Append(result[i].ToString("X2"));
     24             }
     25             return sb.ToString();
     26         }
     27 
     28         /// <summary>
     29         /// 获取MD5值
     30         /// </summary>
     31         /// <param name="sourceString">源字符串</param>
     32         /// <returns>MD5值</returns>
     33         public static string GetMD5(string sourceString)
     34         {
     35             MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
     36             return GetHash(sourceString, md5);
     37         }
     38 
     39         /// <summary>
     40         /// 获取SHA1值
     41         /// </summary>
     42         /// <param name="sourceString">源字符串</param>
     43         /// <returns>SHA1值</returns>
     44         public static string GetSHA1(string sourceString)
     45         {
     46             SHA1 sha1 = new SHA1CryptoServiceProvider();
     47             return GetHash(sourceString, sha1);
     48         }
     49 
     50         /// <summary>
     51         /// 获取SHA256值
     52         /// </summary>
     53         /// <param name="sourceString">源字符串</param>
     54         /// <returns>SHA256值</returns>
     55         public static string GetSHA256(string sourceString)
     56         {
     57             SHA256 sha256 = SHA256.Create();
     58             return GetHash(sourceString, sha256);
     59         }
     60 
     61         /// <summary>
     62         /// 获取SHA384值
     63         /// </summary>
     64         /// <param name="sourceString">源字符串</param>
     65         /// <returns>SHA384值</returns>
     66         public static string GetSHA384(string sourceString)
     67         {
     68             SHA384 sha384 = SHA384.Create();
     69             return GetHash(sourceString, sha384);
     70         }
     71 
     72         /// <summary>
     73         /// 获取SHA512值
     74         /// </summary>
     75         /// <param name="sourceString">源字符串</param>
     76         /// <returns>SHA512值</returns>
     77         public static string GetSHA512(string sourceString)
     78         {
     79             SHA512 sha512 = SHA512.Create();
     80             return GetHash(sourceString, sha512);
     81         }
     82 
     83         public static string GetFileBase64String(string filePath)
     84         {
     85             using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
     86             {
     87                 using (BinaryReader reader = new BinaryReader(fs))
     88                 {
     89                     try
     90                     {
     91                         return GetBase64String(reader.ReadBytes((int)fs.Length));
     92                     }
     93                     catch (System.Exception ex)
     94                     {
     95                         throw ex;
     96                     }
     97                 }
     98             }
     99         }
    100 
    101         public static string GetBase64String(string sourceString)
    102         {
    103             byte[] buffer = Encoding.UTF8.GetBytes(sourceString);
    104             return GetBase64String(buffer);
    105         }
    106 
    107         public static string GetBase64String(string sourceString, Encoding encoding)
    108         {
    109             byte[] buffer = encoding.GetBytes(sourceString);
    110             return GetBase64String(buffer);
    111         }
    112 
    113         public static string GetBase64String(byte[] sourceBytes)
    114         {
    115             string base64String = System.Convert.ToBase64String(sourceBytes);
    116             return base64String;
    117         }
    118     }
    119 }
    View Code

     

  • 相关阅读:
    js数组去重五种方法
    wm_concat 多行字符串拼接
    ORACLE WITH AS 简单用法
    layui laytpl 语法
    看懂Oracle执行计划
    GIT RM -R --CACHED 去掉已经托管在GIT上的文件
    sourceTree使用教程--拉取、获取
    SourceTree忽略文件和文件夹
    layui table 详细讲解
    利用POI实现下拉框级联
  • 原文地址:https://www.cnblogs.com/weihanli/p/encryptionViaCSharp.html
Copyright © 2011-2022 走看看