MD5.au3加密中文的结果与asp加密的结果不一样[已解决]
本帖最后由 awingu 于 2011-4-14 11:33 编辑经过测试,md5.au3加密的结果和asp的md5加密结果除了中文以外都一样。
比如
ASP: md5("awingu123") = 925cf42f2df1b66c8c833d209a23d692
AU3: md5("awingu123") = 925cf42f2df1b66c8c833d209a23d692
两个的结果是一样的,但是中文的结果就不一样了
比如
ASP: md5("你") = 93b885adfe0da089cdf634904fd59f71
AU3: md5("你") = e4860ffb109d975db9067c2b592dd500
所以觉得很奇怪,如果加密的内容里面包含了中文,那么和网页上面加密的结果完全不一样,无法让网站和软件结合使用同样的密匙...
不知道有没有人遇到多这个问题,该如何解决...
这个网站上的MD5算法得到的结果就是和au3得到的结果一样,不知道谁有和他一样的asp算法文件
http://www.xmd5.com/md5/Encrypt.asp
问题原因:
我的asp程序文件全部都是使用utf-8保存的,并非默认的ANSI格式,所以HTML编码是utf-8不是gb2312;
如果在一般默认情况下编写网站并且使用gb2312保存为ansi格式的asp文件的话,
md5加密:“你”得到的值:E4860FFB109D975DB9067C2B592DD500
但是如果使用utf-8编写网页并且保存为utf-8格式的asp文件,
md5加密:“你”得到的值:3B885ADFE0DA089CDF634904FD59F71
使用的是同一个md5.asp,但是结果截然不同。
au3中,我使用的是论坛上面找到的一个md5.au3和StringMD5.au3,目前使用StringMD5.au3文件
md5加密:“你”得到的值:E4860FFB109D975DB9067C2B592DD500
其结果和ansi格式保存的gb2312的aspMD5加密后的结果完全一样:E4860FFB109D975DB9067C2B592DD500
但是我的网站程序全部是用utf-8格式保存的,如果要改成gb2312的话,很多麻烦。
我的处理办法就是
只在md5.asp文件(我用来加密MD5值得asp文件),前面检查网页当前使用的编码,如果不是gb2312则改变其编码为gb2312
即使用936:
Session.CodePage=936
Response.Charset="gb2312"
并且将改变之前的编码保存为一个变量,当md5函数处理工作完成后,检测变量,根据变量将网页使用的编码改回默认的编码。
这样我的网站是utf-8的算出来的md5中文的值和au3中的StringMD5算出来的中文的值是完全一致了。
不知道读者能否理解我说的是什么,我就自私一点,当在这里做个记录便日后提醒自己吧。
最后给站长说些与本问题无关的建议:如果能在帖子标题前面的图标列表中加上? √ × 这样的图标,那么改变问题帖子的状态的楼主就可以选择适当的图片来提醒阅读者,表示该问题是否得到解决便于是否决定查看该帖子。
我这样说或许有人会觉得这样就让论坛的活跃度降低了,但是对于在使用搜索功能寻求帮助的人来说,可能会提高解决问题的效率... asp用的是gb2312编码格式,恐怕是这一点不同 如果一样,就不叫MD5了 已经处理了,做到了计算结果是一样的。我讲问题的原因和处理方式在主楼说明了。 LZ很认真,虽是自己遇到的问题,但所注说明很方便有此疑问的朋友找到答案。
页:
[1]