以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  C# DES加密码解密类  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=125332)


--  作者:卷积内核
--  发布时间:7/24/2012 10:16:00 AM

--  C# DES加密码解密类

使用方式

  
            string Value = "我们都是一起的一起的 一起的";

       

            string _Des = Zgke.Test.DES.DESEncoder(Value, Encoding.Default, null, null);

            string _AAA = Zgke.Test.DES.DESDecoder(_Des, Encoding.Default, null, null);


            MessageBox.Show(_Des, _AAA);

下面是全部的类

1.using System;   
2.using System.Text;   
3.using System.Security.Cryptography;   
4.  
5.  
6.namespace Zgke.Test   
7.{   
8.       
9.    /// <summary>   
10.    /// DES加密 解密   
11.    /// zgke@sina.com   
12.    /// qq:116149   
13.    /// </summary>   
14.    public class DES   
15.    {   
16.        /// <summary>   
17.        /// 对字节进行DES加密   
18.        /// </summary>   
19.        /// <param name="p_Value">字节数组</param>   
20.        /// <param name="p_Key">钥匙 可以使用 System.Text.Encoding.AscII.GetBytes("ABVD") 注意必须是8位 </param>   
21.        /// <param name="p_IV">向量 如果为NULL 向量和钥匙是一个</param>   
22.        /// <returns>加密后的BYTE</returns>   
23.        public static byte[] DESEncoder(byte[] p_Value, byte[] p_Key, byte[] p_IV)   
24.        {   
25.            byte[] _RgbKey = p_Key;   
26.            byte[] _RgbIV = p_IV;   
27.  
28.            if (_RgbKey == null || _RgbKey.Length!= 8) _RgbKey = new byte[] { 0x7A, 0x67, 0x6B, 0x65, 0x40, 0x73, 0x69, 0x6E };   
29.            if (_RgbIV == null) _RgbIV = _RgbKey;   
30.  
31.            DESCryptoServiceProvider _Desc = new DESCryptoServiceProvider();   
32.            ICryptoTransform _ICrypto = _Desc.CreateEncryptor(_RgbKey, _RgbIV);   
33.  
34.            return _ICrypto.TransformFinalBlock(p_Value, 0, p_Value.Length);   
35.        }   
36.        /// <summary>   
37.        /// 对字节进行DES解密   
38.        /// </summary>   
39.        /// <param name="p_Value">字节数组</param>   
40.        /// <param name="p_Key">钥匙 可以使用 System.Text.Encoding.AscII.GetBytes("ABVD") 注意必须是8位 </param>   
41.        /// <param name="p_IV">向量 如果为NULL 向量和钥匙是一个</param>   
42.        /// <returns>解密后的BYTE</returns>   
43.        public static byte[] DESDecoder(byte[] p_Value, byte[] p_Key, byte[] p_IV)   
44.        {   
45.            byte[] _RgbKey = p_Key;   
46.            byte[] _RgbIV = p_IV;   
47.  
48.            if (_RgbKey == null || _RgbKey.Length != 8) _RgbKey = new byte[] { 0x7A, 0x67, 0x6B, 0x65, 0x40, 0x73, 0x69, 0x6E };   
49.            if (_RgbIV == null) _RgbIV = _RgbKey;   
50.  
51.            DESCryptoServiceProvider _Desc = new DESCryptoServiceProvider();   
52.            ICryptoTransform _ICrypto = _Desc.CreateDecryptor(_RgbKey, _RgbIV);   
53.  
54.            return _ICrypto.TransformFinalBlock(p_Value, 0, p_Value.Length);   
55.        }   
56.          
57.        /// <summary>   
58.        /// DES加密   
59.        /// </summary>   
60.        /// <param name="enStr">原始数据</param>   
61.        /// <param name="p_TextEncoding">数据编码</param>   
62.        /// <param name="p_Key">钥匙 可以使用 System.Text.Encoding.AscII.GetBytes("ABVD") 注意必须是8位 </param>   
63.        /// <param name="p_IV">向量 如果为NULL 向量和钥匙是一个</param>   
64.        /// <returns>加密后的字符穿 00-00-00</returns>   
65.        public static string DESEncoder(string p_TextValue, System.Text.Encoding p_TextEncoding,byte[] p_Key,byte[] p_IV)   
66.        {           
67.            byte[] _DataByte = p_TextEncoding.GetBytes(p_TextValue);                    
68.            return BitConverter.ToString(DESEncoder(_DataByte,p_Key,p_IV));   
69.        }   
70.  
71.        /// <summary>   
72.        /// DES解密   
73.        /// </summary>   
74.        /// <param name="p_TextValue">经过加密数据</param>   
75.        /// <param name="p_TextEncoding">数据编码</param>   
76.        /// <param name="p_Key">钥匙 可以使用 System.Text.Encoding.AscII.GetBytes("ABVD") 注意必须是8位 </param>   
77.        /// <param name="p_IV">向量 如果为NULL 向量和钥匙是一个</param>   
78.        /// <returns>解密后的字符穿</returns>   
79.        public static string DESDecoder(string p_TextValue, System.Text.Encoding p_TextEncoding,byte[] p_Key,byte[] p_IV)   
80.        {   
81.             
82.            string[] _ByteText = p_TextValue.Split('-');   
83.            byte[] _DataByte =new byte[_ByteText.Length];   
84.            for (int i = 0; i != _ByteText.Length; i++)   
85.            {   
86.                _DataByte[i] = Convert.ToByte(_ByteText[i], 16);   
87.            }       
88.            return p_TextEncoding.GetString(DESDecoder(_DataByte,p_Key,p_IV));   
89.        }   
90.    }   
91.  
92.  
93.}  


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms