C#实现DES对称加密法

入口参数有三个:key、data、mode。 key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。

 1  ///   <summary>
 2     ///  DES对称加密
 3     ///   </summary>
 4     public   sealed   class  DES {
 5       ///   <summary>
 6       ///  Des解密方法
 7       ///   </summary>
 8       ///   <param name="val"></param>
 9       ///   <param name="key"></param>
10       ///   <param name="IV"></param>
11       ///   <returns></returns>
12       public   static   string  Decrypt( string  val,  string  key,  string  IV) {
13         try  {
14           byte [] buffer1  =  Convert.FromBase64String(key);
15           byte [] buffer2  =  Convert.FromBase64String(IV);
16          DESCryptoServiceProvider provider1  =   new  DESCryptoServiceProvider();
17          provider1.Mode  =  CipherMode.ECB;
18          provider1.Key  =  buffer1;
19          provider1.IV  =  buffer2;
20          ICryptoTransform transform1  =  provider1.CreateDecryptor(provider1.Key, provider1.IV);
21           byte [] buffer3  =  Convert.FromBase64String(val);
22          MemoryStream stream1  =   new  MemoryStream();
23          CryptoStream stream2  =   new  CryptoStream(stream1, transform1, CryptoStreamMode.Write);
24          stream2.Write(buffer3,  0 , buffer3.Length);
25          stream2.FlushFinalBlock();
26          stream2.Close();
27           return  Encoding.Default.GetString(stream1.ToArray());
28        }
29         catch //  (System.Exception ex)
30        {
31           return   "" ;
32        }
33      }
34 
35       ///   <summary>
36       ///  Des加密方法
37       ///   </summary>
38       ///   <param name="val"></param>
39       ///   <param name="key"></param>
40       ///   <param name="IV"></param>
41       ///   <returns></returns>
42       public   static   string  Encrypt( string  val,  string  key,  string  IV) {
43         try  {
44           byte [] buffer1  =  Convert.FromBase64String(key);
45           byte [] buffer2  =  Convert.FromBase64String(IV);
46 
47          DESCryptoServiceProvider provider1  =   new  DESCryptoServiceProvider();
48          provider1.Mode  =  CipherMode.ECB;
49          provider1.Key  =  buffer1;
50          provider1.IV  =  buffer2;
51          ICryptoTransform transform1  =  provider1.CreateEncryptor(provider1.Key, provider1.IV);
52           byte [] buffer3  =  Encoding.Default.GetBytes(val);
53          MemoryStream stream1  =   new  MemoryStream();
54          CryptoStream stream2  =   new  CryptoStream(stream1, transform1, CryptoStreamMode.Write);
55          stream2.Write(buffer3,  0 , buffer3.Length);
56          stream2.FlushFinalBlock();
57          stream2.Close();
58           return  Convert.ToBase64String(stream1.ToArray());
59        }
60         catch //  (Exception ex)
61        {
62           return   "" ;
63        }
64      }
65    }
66 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值