|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你觉得学习.NET怎么样,我懂的少,问的可能很幼稚,见笑了啊:)</p>MD5的全称是Message-DigestAlgorithm5(信息-择要算法),在90年月初由MitLaboratoryforComputerScience和Rsadatasecurityinc的Ronaldl.rivest开辟出来,经md2、md3和md4开展而来。它的感化是让年夜容量信息在用数字署名软件签订公家密匙前被"紧缩"成一种保密的格局(就是把一个恣意长度的字节串变更成必定长的年夜整数)。不论是md2、md4仍是md5,它们都必要取得一个随机长度的信息并发生一个128位的信息择要。
加密哈希函数将恣意长度的二进制字符串映照为流动长度的小型二进制字符串。加密哈希函数有如许一个属性:在盘算上不年夜大概找到散列为不异的值的两个分歧的输出;也就是说,两组数据的哈希值仅在对应的数据也婚配时才会婚配。数据的大批变动会在哈希值中发生不成预知的大批变动。以是你很难从加密后的笔墨中找到千丝万缕。
SHA1的全称是SecureHashAlgorithm(平安哈希算法)
MD5算法的哈希值巨细为128位。而SHA1算法的哈希值巨细为160位。两种算法都是不成逆。
虽然说2004年8月17日的美国加州圣巴巴拉的国际暗码学集会(Crypto’2004)上,来自中国山东年夜学的王小云传授做了破译MD5、HAVAL-128、MD4和RIPEMD算法的呈报,发布了MD系列算法的破解了局。宣布了坚如盘石的天下通行暗码尺度MD5的碉堡轰然倾圮,激发了暗码学界的轩然年夜波。可是我以为关于我们做一般的软件来讲,这个加密平安水平已充足利用了。
我们寻常用的最多的不过就是加密用户暗码,把加密好的暗码存储到数据库中,举行暗码对照的时分,把用户输出的暗码再举行加密,然后与数据库中的密文举行对照。至于ASP.net类中是怎样完成加密算法的,这个我们不必要体贴,会用就好了。
上面就是ASP.NET中几种加密办法。加密算法有两种,也就是下面提到的MD5和SHA1,这里我举的例子是以MD5为例,SHA1大抵不异,只是利用的类纷歧样。
MD5相干类:
System.Security.Cryptography.MD5
System.Security.Cryptography.MD5CryptoServiceProvider()
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource,"MD5")
SHA1相干类:
System.Security.Cryptography.SHA1
System.Security.Cryptography.SHA1CryptoServiceProvider()
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource,"SHA1")
办法以下:(用的vs2005)
1/**////<summary>
2///办法一:经由过程利用new运算符创立工具
3///</summary>
4///<paramname="strSource">必要加密的明文</param>
5///<returns>前往16位加密了局,该了局取32位加密了局的第9位到25位</returns>
6publicstringGet_MD5_Method1(stringstrSource)
7{
8 //new
9 System.Security.Cryptography.MD5md5=newSystem.Security.Cryptography.MD5CryptoServiceProvider();
10
11 //猎取密笔墨节数组
12 byte[]bytResult=md5.ComputeHash(System.Text.Encoding.Default.GetBytes(strSource));
13
14 //转换成字符串,并取9到25位
15 stringstrResult=BitConverter.ToString(bytResult,4,8);
16 //转换成字符串,32位
17 //stringstrResult=BitConverter.ToString(bytResult);
18
19 //BitConverter转换出来的字符串会在每一个字符两头发生一个分开符,必要往撤除
20 strResult=strResult.Replace("-","");
21 returnstrResult;
22}
23
24/**////<summary>
25///办法二:经由过程挪用特定加密算法的笼统类上的Create办法,创立完成特定加密算法的工具。
26///</summary>
27///<paramname="strSource">必要加密的明文</param>
28///<returns>前往32位加密了局</returns>
29publicstringGet_MD5_Method2(stringstrSource)
30{
31 stringstrResult="";
32
33 //Create
34 System.Security.Cryptography.MD5md5=System.Security.Cryptography.MD5.Create();
35
36 //注重编码UTF8、UTF7、Unicode等的选择
37 byte[]bytResult=md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource));
38
39 //字节范例的数组转换为字符串
40 for(inti=0;i<bytResult.Length;i++)
41 {
42 //16进制转换
43 strResult=strResult+bytResult[i].ToString("X");
44 }
45 returnstrResult;
46}
47
48/**////<summary>
49///办法三:间接利用HashPasswordForStoringInConfigFile天生
50///</summary>
51///<paramname="strSource">必要加密的明文</param>
52///<returns>前往32位加密了局</returns>
53publicstringGet_MD5_Method3(stringstrSource)
54{
55 returnSystem.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource,"MD5");
56}
这些加密函数都是在服务器端实行,也就是说,当用户输出暗码后,从客户端到服务器端传输时,用户的暗码没有任何回护,很伤害。银行的做法是在客户端安装ActiveX控件,在客户端就把一些主要信息举行加密,再发送。这个偶就不会拉,很但愿能进修进修做这类ActiveX控件。
我也不知道,我原来理解的,NET就是C++编程,只是与JAVA相对,呵呵。以为.ET就是高级C++编程。 |
|