MD5加密、Base64和DES可加密解密

在做项目的过程中,一般都会涉及到用户名和密码。而这个时候密码就需要加密一下,在这里我就用Md5加密了。而很多人会有这个疑问,Md5可以在线转换,是的,的确可以在线转换,那么你可以试试多加密几次,这样在线工具解密的难度就会大大增大。而Base64和DES可加密也可解密,上代码。

1、Md5加密。

复制代码
 1 static void Main(string[] args)
 2 {
 3     //在这里我加密了3次。
 4     string str =Encrypt(Encrypt(Encrypt(Encrypt("123456"))));
 5     Console.WriteLine(str);
 6     Console.ReadLine();
 7 }
 8 
 9 /// <summary>
10 /// 此方法用于加密字符串。
11 /// </summary>
12 /// <param name="str">加密的字符串。</param>
13 /// <returns>返回加密后的字符串。</returns>
14 public static string Encrypt(string str)
15 {
16     //创建Md5。
17     MD5 md5 = MD5.Create();
18     //将要加密的字符串转换成字节数组。
19     byte[] buffer = UTF8Encoding.UTF8.GetBytes(str);
20     //通过ComputeHash函数进行加密,加密后返回的是字节数组。
21     byte[] result = md5.ComputeHash(buffer);
22     //声明一个字符串,用于存储解析后的加密字符串。
23     StringBuilder sb = new StringBuilder();
24     //循环遍历将字节数组转换为字符串。
25     foreach (byte item in result)
26     {
27         //累加。
28         sb.Append(item.ToString("X2"));
29     }
30     //返回加密后的字符串。
31     return sb.ToString();
32 }
复制代码

 2、Base64加密解密。

复制代码
 1 /// <summary>
 2 /// Base64加密。
 3 /// </summary>
 4 /// <param name="encryptStr">要加密的字符串。</param>
 5 /// <returns>返回加密后的字符串。</returns>
 6 public static string Base64Encrypt(string encryptStr)
 7 {
 8     //将字符串转换成字节数组。
 9     byte[] buffer = Encoding.UTF8.GetBytes(encryptStr);
10     //ToBase64String():将8位无符号整数的数组转换为其用 Base64 数字编码的等效字符串表示形式
11     return Convert.ToBase64String(buffer);
12 }
13 
14 /// <summary>
15 /// Base64解密。
16 /// </summary>
17 /// <param name="decryptStr">要解密的字符串。</param>
18 /// <returns>将解密后的字符串返回。</returns>
19 public static string Base64Decrypt(string decryptStr)
20 {
21     //将指定的字符串(它将二进制数据编码为 Base64 数字)转换为等效的 8 位无符号整数数组。
22     byte[] buffer = Convert.FromBase64String(decryptStr);
23     //将加密后的数据解密后返回出去。
24     return Encoding.UTF8.GetString(buffer);
25 }    
复制代码

3、Des加密解密。

复制代码
 1 /// <summary>
 2 /// 加密值key,这个地方一定是4个字符的,如果写成tes就会报错,报错内容为【指定键的大小对于此算法无效】
 3 /// </summary>
 4 public static string encryptKey = "test";
 5 
 6 /// <summary>
 7 /// Des加密。
 8 /// </summary>
 9 /// <param name="encryptStr">要加密的字符串。</param>
10 /// <returns>返回加密后的字符串。</returns>
11 public static string DesEncrypt(string encryptStr)
12 {
13     using (DESCryptoServiceProvider desCSP = new DESCryptoServiceProvider())
14     {
15         byte[] keyByte = Encoding.Unicode.GetBytes(encryptKey);
16         //定义字节数组,用于存储要解密的字符串。
17         byte[] dataByte = Encoding.Unicode.GetBytes(encryptStr);
18         //实例化一个流。
19         using (MemoryStream memoryStream = new MemoryStream())
20         {
21             //使用内存流实例化加密对象。
22             using (CryptoStream cs = new CryptoStream(memoryStream, desCSP.CreateEncryptor(keyByte, keyByte), CryptoStreamMode.Write))
23             {
24                 //加密流中写入数据。
25                 cs.Write(dataByte, 0, dataByte.Length);
26             }
27             //返回加密后的数据。
28             return Convert.ToBase64String(memoryStream.ToArray());
29         }    
30     }        
31 }    
32     
33 /// <summary>
34 /// Des解密。
35 /// </summary>
36 /// <param name="decryptStr">要解密的字符串。</param>
37 /// <returns>返回解密后的字符串。</returns>
38 public static string DesDecrypt(string decryptStr)
39 {
40     using (DESCryptoServiceProvider desCSP = new DESCryptoServiceProvider())
41     {
42         //定义字节数组,用来存储密钥。
43         byte[] keyByte = Encoding.Unicode.GetBytes(encryptKey);
44         //定义字节数组,用来存储要解密的字符串。
45         byte[] dataByte = Convert.FromBase64String(decryptStr);
46         //实例化一个流。
47         using (MemoryStream memoryStream = new MemoryStream())
48         {
49             //使用内存流实例化加密对象。
50             using (CryptoStream cs = new CryptoStream(memoryStream, desCSP.CreateDecryptor(keyByte, keyByte), CryptoStreamMode.Write))
51             {
52                 //加密流中写入数据。
53                 cs.Write(dataByte, 0, dataByte.Length);
54             }
55             //返回解密后的字符串。
56             return Encoding.Unicode.GetString(memoryStream.ToArray()); 
57         }
58     }
59 } 
复制代码

End。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值