C# DES加密

需要引用名称空间

1 using System;
2 using System.Text;
3 using System.Security.Cryptography;
4 using System.IO;

具体代码:

 1 public class CryptoHelper
 2     {
 3         /// <summary>
 4         /// 使用DES加密
 5         /// </summary>
 6         /// <param name="plain">明文</param>
 7         /// <param name="key">加密钥匙</param>
 8         /// <param name="iv">向量</param>
 9         /// <returns>返回密文</returns>
10         public static string DesEncode(string plain, string key, string iv)
11         {
12             //把密钥转换成字节数组
13             byte[] keyBytes = Encoding.ASCII.GetBytes(key);
14 
15             //把向量转换成字节数组
16             byte[] ivBytes = Encoding.ASCII.GetBytes(iv);
17 
18             //声明1个新的DES对象 
19             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
20 
21             //开辟一块内存流
22             MemoryStream msEncrypt = new MemoryStream();
23 
24             //把内存流对象包装成加密流对象 
25             CryptoStream csEncrypt = new CryptoStream(msEncrypt, des.CreateEncryptor(keyBytes, ivBytes), CryptoStreamMode.Write);
26 
27             //把加密流对象包装成写入流对象
28             StreamWriter swEncrypt = new StreamWriter(csEncrypt);
29 
30             //写入流对象写入明文  
31             swEncrypt.WriteLine(plain);
32 
33             //写入流关闭  
34             swEncrypt.Close();
35 
36             //加密流关闭  
37             csEncrypt.Close();
38 
39             //把内存流转换成字节数组,内存流现在已经是密文了  
40             byte[] bytesCipher=msEncrypt.ToArray();
41 
42             //内存流关闭 
43             msEncrypt.Close();
44             //将字节数组转化成Base64字符串
45             return Convert.ToBase64String(bytesCipher);
46         }
47 
48         public static string DesDeCode(string cipher, string key, string iv)
49         {
50             //将密文通过Base64位还原成字节数组
51             byte[] cipherByte = Convert.FromBase64String(cipher);
52 
53             //把密钥转换成字节数组
54             byte[] keyBytes = Encoding.ASCII.GetBytes(key);
55 
56             //把向量转换成字节数组
57             byte[] ivBytes = Encoding.ASCII.GetBytes(iv);
58 
59             //声明1个新的DES对象 
60             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
61 
62             //开辟一块内存流,并存放密文字节数组
63             MemoryStream msDecrypt = new MemoryStream(cipherByte);
64 
65             //把内存流对象包装成解密流对象 
66             CryptoStream csDecrypt = new CryptoStream(msDecrypt, des.CreateDecryptor(keyBytes, ivBytes), CryptoStreamMode.Read);
67 
68             //把解密流对象包装成写入流对象
69             StreamReader srDecrypt = new StreamReader(csDecrypt);
70 
71             //明文=读出流的读出内容   
72             string strPlainText=srDecrypt.ReadLine();
73 
74             //读出流关闭  
75             srDecrypt.Close();
76 
77             //解密流关闭  
78             csDecrypt.Close();
79 
80             //内存流关闭  
81             msDecrypt.Close();
82 
83             //返回明文  
84             return strPlainText;
85         }
86     }

 

posted @ 2017-04-11 00:05  jeremy1888  阅读(307)  评论(0编辑  收藏  举报