DES加密,解密代码分享-C#版

在用户登录时我们常常要用到密码加密代码,在读别人代码时看到一段实用加密和解密代码,需要用的朋友请直接看代码。

DES加密/解密类代码如下:

ContractedBlock.gif ExpandedBlockStart.gif Code
 1using System;
 2using System.Security.Cryptography;  
 3using System.Text;
 4namespace ROYcms.DB
 5ExpandedBlockStart.gifContractedBlock.gif{
 6ExpandedSubBlockStart.gifContractedSubBlock.gif    /**//// <summary>
 7    /// DES加密/解密类。
 8    /// </summary>

 9    public class DESEncrypt
10ExpandedSubBlockStart.gifContractedSubBlock.gif    {
11        public DESEncrypt()
12ExpandedSubBlockStart.gifContractedSubBlock.gif        {            
13        }

14
15ContractedSubBlock.gifExpandedSubBlockStart.gif        ========加密========#region ========加密======== 
16 
17ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
18        /// 加密
19        /// </summary>
20        /// <param name="Text"></param>
21        /// <returns></returns>

22        public static string Encrypt(string Text) 
23ExpandedSubBlockStart.gifContractedSubBlock.gif        {
24            return Encrypt(Text,"izhufan.cn");
25        }

26ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary> 
27        /// 加密数据 
28        /// </summary> 
29        /// <param name="Text"></param> 
30        /// <param name="sKey"></param> 
31        /// <returns></returns> 

32        public static string Encrypt(string Text,string sKey) 
33ExpandedSubBlockStart.gifContractedSubBlock.gif        
34            DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
35            byte[] inputByteArray; 
36            inputByteArray=Encoding.Default.GetBytes(Text); 
37            des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(08)); 
38            des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(08)); 
39            System.IO.MemoryStream ms=new System.IO.MemoryStream(); 
40            CryptoStream cs=new CryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write); 
41            cs.Write(inputByteArray,0,inputByteArray.Length); 
42            cs.FlushFinalBlock(); 
43            StringBuilder ret=new StringBuilder(); 
44            foreachbyte b in ms.ToArray()) 
45ExpandedSubBlockStart.gifContractedSubBlock.gif            
46                ret.AppendFormat("{0:X2}",b); 
47            }
 
48            return ret.ToString(); 
49        }
 
50
51        #endregion

52        
53ContractedSubBlock.gifExpandedSubBlockStart.gif        ========解密========#region ========解密======== 
54   
55 
56ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
57        /// 解密
58        /// </summary>
59        /// <param name="Text"></param>
60        /// <returns></returns>

61        public static string Decrypt(string Text) 
62ExpandedSubBlockStart.gifContractedSubBlock.gif        {
63            return Decrypt(Text, "izhufan.cn");
64        }

65ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary> 
66        /// 解密数据 
67        /// </summary> 
68        /// <param name="Text"></param> 
69        /// <param name="sKey"></param> 
70        /// <returns></returns> 

71        public static string Decrypt(string Text,string sKey) 
72ExpandedSubBlockStart.gifContractedSubBlock.gif        
73            DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
74            int len; 
75            len=Text.Length/2
76            byte[] inputByteArray = new byte[len]; 
77            int x,i; 
78            for(x=0;x<len;x++
79ExpandedSubBlockStart.gifContractedSubBlock.gif            
80                i = Convert.ToInt32(Text.Substring(x * 22), 16); 
81                inputByteArray[x]=(byte)i; 
82            }
 
83            des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(08)); 
84            des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(08)); 
85            System.IO.MemoryStream ms=new System.IO.MemoryStream(); 
86            CryptoStream cs=new CryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write); 
87            cs.Write(inputByteArray,0,inputByteArray.Length); 
88            cs.FlushFinalBlock(); 
89            return Encoding.Default.GetString(ms.ToArray()); 
90        }
 
91 
92        #endregion
 
93
94
95    }

96}

97


数据加密标准 (DES)是一种加密算法(一种加密信息的方法),1976年被美国联邦政府的联邦信息处理标准(FIPS)所选中,随后既在国际上广泛流传开来。这个算法因为包含一些机密设计元素,相关的短密钥长度以及被怀疑内含国家安全局(NSA)的后门而在开始是有争议的,DES因此收到强烈的学院派式的审查,并以此推动了现代的分组密码及其密码分析。

DES现在已经不视为一种安全的加密算法,因为它使用的56位秘钥过短,以现代计算能力,24小时内即可能被破解。也有一些分析报告提出了该算法的理论上的弱点,虽然实际情况未必出现。该标准在最近已经被高级加密标准(AES)所取代。

 

转载于:https://www.cnblogs.com/lgh/archive/2009/02/20/1394632.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值