● yxmcy 关于mac地址的md5加密问题 2013年1月9日 16:13 已知从客户端获取的MAC地址是:mac=00-1E-71-43-90-2B 为什么md5(mac,16)和md5("00-1E-71-43-90-2B",16)结果不同?请哪位大侠指教! ◆ 孙坚 Re: 关于mac地址的md5加密问题 2013年1月11日 11:05 怀疑数据类型不一样。 mac不一定是字符型的,字符型也不一定有“-”。直接输出时显示也不一定准,有可能自动调用了toString方法。 ● yxmcy Re: 关于mac地址的md5加密问题 2013年1月11日 14:59 我开始也怀疑是数据类型问题,但是,经测试: <%=VarType(mac)%>和<%=VarType("00-1E-71-43-90-2B")%>都返回8 <%=TypeName(mac)%>和<%=TypeName("00-1E-71-43-90-2B")%>都返回String 看样子不是数据类型问题,到底问题出在何处呢?还想向大侠们讨教! ● yxmcy Re: 关于mac地址的md5加密问题 2013年1月14日 8:36 好象ASP.NET中有toString方法,而ASP中没有。 我现在找到一个笨办法,那就是先截取再拼接字符串,然后加密就可以了,即: md5(mid(mac,1,2)&"-"&mid(mac,4,2)&"-"&mid(mac,7,2)&"-"&mid(mac,10,2)&"-"&mid(mac,13,2)&"-"&mid(mac,16,2),16)=md5("00-1E-71-43-90-2B",16) 但这肯定不是最好的办法,哪位指教一下? ◆ Parno Re: 关于mac地址的md5加密问题 2013年1月16日 15:07 MAC 地址有时是用 : 分隔,有时是 -,replace(replace(mac,"-",""),":","") ,去掉分隔符号未尝不可 ● yxmcy Re: 关于mac地址的md5加密问题 2013年1月17日 8:05 但是,在我所举例子中: md5(replace(mac,"-",""),16 )≠md5("001E7143902B",16) 所以,采取部分替换的办法还是不可行。 ◆ Jed Re: 关于mac地址的md5加密问题 2013年1月17日 19:30 试过 trim(mac) 吗? ● yxmcy Re: 关于mac地址的md5加密问题 2013年1月21日 8:25 trim(mac)也不行,就是说在原获取值的基础上的处理都不行,只有截取、拼接成新字符串才可以。真的没有其他办法了吗? ◆ Parno Re: 关于mac地址的md5加密问题 2013年1月21日 12:04 会不会含有 NUL字符?replace(mac, chr(0),"") ? ● yxmcy Re: 关于mac地址的md5加密问题 2013年1月21日 14:49 试过,同样不行。 ◆ Jed Re: 关于mac地址的md5加密问题 2013年1月21日 22:34 dim i,a a=len(mac) for i=1 to len(mac) a=a & "," & asc(mid(mac,i,1)) next response.write a 用这段代码看看mac里面都有些什么 ◆ Parno Re: 关于mac地址的md5加密问题 2013年1月23日 15:18 确信 len(mac) 和 len("00-1E-71-43-90-2B") 长度一样吗? response.write(mac="00-1E-71-43-90-2B") 返回 false ? ◆ Parno Re: 关于mac地址的md5加密问题 2013年1月23日 15:20 类型问题好办的 mac=mac & "" 一下就成字符串了 ◆ 斜月三星 Re: 关于mac地址的md5加密问题 2013年1月23日 16:30 我的第一个反应,是编码问题。两个都是ANSI编码,还是有一个UTF-8编码? 你的ASP文件,存储的时候,是什么编码? ● yxmcy Re: 关于mac地址的md5加密问题 2013年1月24日 9:45 我的ASP文件,存储编码是charset=gb2312,提取和输入的内容都在同一个文件里,看样子不是编码问题。 但是,正如Parno先生所指: <%=len(mac)%> 返回18 <%=len("00-1E-71-43-90-2B")%> 返回17 <%response.write(mac="00-1E-90-2B-73-47")%> 返回false 为什么提取的字符显示时和输入的字符一样,而实际上字符串的长度多1呢? ◆ 孙坚 Re: 关于mac地址的md5加密问题 2013年1月24日 14:40 你rspobnse.write("#" & mac & "#") 仔细检查两个##号之间是否有什么不显示的字符。 ◆ 孙坚 Re: 关于mac地址的md5加密问题 2013年1月24日 14:43 response打错了,可以复制到记事本中看。 ● yxmcy Re: 关于mac地址的md5加密问题 2013年1月25日 10:12 没有不显示的字符,我用的代码是<%=mac%>,应该与<%response.write(mac)%>等效。 ◆ Parno Re: 关于mac地址的md5加密问题 2013年2月3日 0:55 即然长度不同,那用循环把取得的mac一个个字符mid(mac,i,1)出来,你一定能看到多出来的是什么字符的。 ◆ Parno Re: 关于mac地址的md5加密问题 2013年2月3日 1:10 for i=1 to len(mac) c=mid(mac,i,1) response.write(c & "的ASC结果是" & asc(c) & "<br />") next ● yxmcy Re: 关于mac地址的md5加密问题 2013年2月4日 9:51 经查,尾部多一位不可见字符。现在问题好解决了,只要左截17位字符,再加密就行了。即: md5(left(mac,17),16)与md5("00-1E-71-43-90-2B",16)等效。 非常感谢Parno等各位先生的指点和关注!
|