zoukankan      html  css  js  c++  java
  • C# 数据加密解密

    1 public class EncryptProvider
    2 {
    3
    4 // Hash an input string and return the hash as
    5 // a 32 character hexadecimal string.
    6   public static string GetMd5Hash(string input)
    7 {
    8 MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
    9 byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
    10 StringBuilder sBuilder = new StringBuilder();
    11 for (int i = 0; i < data.Length; i++)
    12 {
    13 sBuilder.Append(data[i].ToString("x2"));
    14 }
    15 return sBuilder.ToString();
    16 }
    17
    18 // Verify a hash against a string.
    19 public static bool VerifyMd5Hash(string input, string hash)
    20 {
    21 string hashOfInput = GetMd5Hash(input);
    22 StringComparer comparer = StringComparer.OrdinalIgnoreCase;
    23 if (0 == comparer.Compare(hashOfInput, hash))
    24 {
    25 return true;
    26 }
    27 else
    28 {
    29 return false;
    30 }
    31 }
    32 //默认密钥向量
    33 private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
    34 /// <summary>
    35 /// DES加密字符串
    36 /// </summary>
    37 /// <param name="encryptString">待加密的字符串</param>
    38 /// <param name="encryptKey">加密密钥,要求为8位</param>
    39 /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
    40 public static string EncryptDES(string encryptString, string encryptKey)
    41 {
    42 try
    43 {
    44 byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
    45 byte[] rgbIV = Keys;
    46 byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
    47 DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
    48 MemoryStream mStream = new MemoryStream();
    49 CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
    50 cStream.Write(inputByteArray, 0, inputByteArray.Length);
    51 cStream.FlushFinalBlock();
    52 return Convert.ToBase64String(mStream.ToArray());
    53 }
    54 catch
    55 {
    56 return encryptString;
    57 }
    58 }
    59
    60 /// <summary>
    61 /// DES解密字符串
    62 /// </summary>
    63 /// <param name="decryptString">待解密的字符串</param>
    64 /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
    65 /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
    66 public static string DecryptDES(string decryptString, string decryptKey)
    67 {
    68 try
    69 {
    70 byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
    71 byte[] rgbIV = Keys;
    72 byte[] inputByteArray = Convert.FromBase64String(decryptString);
    73 DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
    74 MemoryStream mStream = new MemoryStream();
    75 CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
    76 cStream.Write(inputByteArray, 0, inputByteArray.Length);
    77 cStream.FlushFinalBlock();
    78 return Encoding.UTF8.GetString(mStream.ToArray());
    79 }
    80 catch
    81 {
    82 return decryptString;
    83 }
    84 }
    85 }
    86
    87
    88
    89
  • 相关阅读:
    jQuery弹出层插件大全:
    JavaScript数组去重的几种方法
    sql去除重复列(行)
    VS无法启动调试
    .将DayOfWeek转换成中文的几种方式
    关于 uniqueidentifier
    链接服务器
    我的目标:系统架构师
    异常(1)
    Visual C++开发工具与调试技巧整理
  • 原文地址:https://www.cnblogs.com/pingjiang/p/1869189.html
Copyright © 2011-2022 走看看