level 5
蓝星空LXK
楼主
怎样将32位长度的md5加密过的码转换为16位长度的? 32位MD5的中间16位,也就是第9~25位就是16位MD5的值,怎么截取就不用我教你了吧?32位去掉首尾8个字符就是16位的md5密文123456的MD5 32位码e10adc3949ba59abbe56e057f20f883e123456的MD5 16位码49ba59abbe56e057 .Net MD5加密-16位32位代码内容public string md5(string str,int code) { if(code==16) //16位MD5加密(取32位加密的9~25字符) { return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16) ; } else//32位加密 { return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower(); } }~~~~~~~~~~~~~~~~~~~~~~~~~在ASP中的MD5函数是使用了32位MD5 Hashvalue中的第9~25位再变小写作为密文。知道这个原因,把ASP.NET的结果稍加处理就可以用来比较老数据库中的密码字串了。在ASP的MD5函数中第353、354行: 'MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d)) MD5=LCase(WordToHex(b) & WordToHex(c)) 'I crop this to fit 16byte database password :D第一句是取全部的32位密文,第二句则是取中间第9~25位为16位密文。
2007年01月17日 10点01分
1