@
feijilei 原因找到了。php和python默认以iso-8859-1编码字符串,而js以utf-8编码字符串
echo md5(iconv("ISO-8859-1","utf-8", base64_decode('BvkmoUl5IixfrqzaSTqfcjY3eA51Hpr1pjZPag==')));
这个结果和js的结果就是一样的了。
所以问题解决的办法是把通过js base64解码后得到的字符串转码成iso-8859-1。
理论上decodeURIComponent(escape(str));应该可以解决的,但是Chrome报错 =S,所以这里你需要自己研究一下。
另外,js里源生有base64函数,不用依赖库。
btoa(str)是编码,atob(str)是解码。
不过编码只能对iso-8859-1编码的字符串进行,ascii里的没问题,汉字什么的就得多一步操作:
btoa(unescape(encodeURIComponent(str)));
以上。