新帆新闻组(计算机.软件.编程.ASP)讨论记录--茅竹吟风
发布:2013/3/8 9:47:44
分类: 杂货铺陈
阅读:1726

● 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等各位先生的指点和关注! 

返回上页

返回首页