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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述