浅谈ASP.NET和VB.NET的MD5加密函数

开发 后端
本文将简单谈谈ASP.NET和VB.NET的MD5加密函数,MD5加密函数是一种比较综合的方法啊,应用范围很广,希望本文能对大家有所帮助。

在ASP中,我们使用过如动网论坛等用的ASP中MD5函数加密出的字符串则如:

1165d25d8cd021d5

而在ASP.NET中下面的方法:

  1. System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password.Text,"MD5") 

进行MD5加密出来的结果却是:

12C403B91165D25D8CD021D5F9B5BB7F

究其原因,是因为,在ASP中的MD5函数是使用了32位MD5Hashvalue中的第9~25位再变小写作为密文。知道这个原因,把ASP.NET的结果稍加处理就可以用来比较老数据库中的密码字串了。

在ASP的MD5函数中第353、354行:

  1. 'MD5=LCase(WordToHex(a)&WordToHex(b)&WordToHex(c)&WordToHex(d))  
  2. MD5=LCase(WordToHex(b)&WordToHex(c))'Icropthistofit16bytedatabasepassword:D 

第一句是取全部的32位密文,第二句则是取中间第9~25位为16位密文。

到了VB.NET的MD5加密函数问题又来了,在VB.NET的MD5加密函数里,无法用到System.Web.Security名称空间,无法用上面简单的办法进行MD5加密。故我写了下面这个函数来处理:

VB.NET:

VB.NET的MD5加密函数

  1. PublicSharedFunctionMD5(ByValstrSourceAsString,ByValCodeAsInt16)AsString 

'这里用的是ascii编码密码原文,如果要用汉字做密码,可以用UnicodeEncoding,但会与ASP中的MD5函数不兼容

  1. DimdataToHashAsByte()=(NewSystem.Text.ASCIIEncoding).GetBytes(strSource)  
  2. DimhashvalueAsByte()=CType(System.Security.Cryptography.CryptoConfig.CreateFromName("MD5"),System.Security.Cryptography.HashAlgorithm).ComputeHash(dataToHash)  
  3. DimiAsInteger  
  4. SelectCaseCode  
  5. Case16'选择16位字符的加密结果  
  6. Fori=4To11 
  7. MD5+=Hex(hashvalue(i)).ToLower  
  8. Next  
  9. Case32'选择32位字符的加密结果  
  10. Fori=0To15 
  11. MD5+=Hex(hashvalue(i)).ToLower  
  12. Next  
  13. CaseElse'Code错误时,返回全部字符串,即32位字符  
  14. Fori=0Tohashvalue.Length-1  
  15. MD5+=Hex(hashvalue(i)).ToLower  
  16. Next  
  17. EndSelect  
  18. EndFunction 

【编辑推荐】

  1. ASP.NET的DataList和Repeater控件
  2. 浅析ASP.NET的IIS映射
  3. 概述ASP.NET状态类型
  4. 浅谈ASP.NET和Web服务器
  5. ASP.NET的EnableViewState属性
责任编辑:彭凡 来源: 51CTO.com
相关推荐

2011-05-19 09:20:21

VB.NETASP.NET

2009-07-24 15:58:20

ASP.NET MD5ASP.NET SHA

2009-10-26 14:06:03

2009-07-28 17:03:55

ASP.NET VB.

2009-10-14 12:51:41

VB.NET Data

2009-10-20 09:39:04

VB.NET Butt

2009-10-28 10:31:23

VB.NET Impl

2009-10-14 10:08:05

VB.NET编写DEC

2009-07-24 10:52:42

ASP.NET ISA

2009-07-20 15:30:11

ASP.NET应用

2009-07-22 16:11:43

ASP.NET AJA

2009-10-13 11:22:46

VB.NET调用Web

2009-10-12 13:32:58

VB.NET线程构造器

2009-10-16 10:14:26

VB.NET使用Fil

2009-10-19 11:28:42

VB.NET语言.NET开发语言

2009-10-15 17:50:48

VB.NET Spli

2009-11-10 13:27:30

VB.NET RND(

2009-10-21 10:45:50

VB.NET Quic

2009-08-05 15:29:33

ASP.NET For

2009-08-10 10:19:47

ASP.NET组件设计
点赞
收藏

51CTO技术栈公众号