你能否建议一种方法来获取与perl的md5_base64
函数相同的结果?我当前的js环境有md5
和base64encode
个函数,但我不确定如何以正确的方式使用它们。
我试过写这样的东西,但结果与perl的不同:
function hex2str(str) {
var res = '';
for (var i = 0; i < str.length; i += 2) {
res += String.fromCharCode(parseInt(str.substr(i, 2), 16));
}
return res;
}
var md5res = md5('test'); // '098f6bcd4621d373cade4e832627b4f6'
var token = base64encode(hex2str(md5('test'))); // got 'CcKPa8ONRiHDk3PDisOeTsKDJifCtMO2'
Perl:
#!/usr/bin/perl
use Digest::MD5 qw{md5_base64};
print md5_base64("test"); // 'CY9rzUYh03PK3k6DJie09g'
答案 0 :(得分:0)
分别检查md5()
和base64encode()
的输出。
前的输出应为098f6bcd4621d373cade4e832627b4f6
。
如果您在浏览器中运行,您还应该能够使用window.btoa()
作为Base64编码器功能。
我已经单独验证window.btoa(hex2str('098f6bcd4621d373cade4e832627b4f6'))
产生与Perl代码相同的输出(除了window.btoa
在末尾包含一些==
填充以使输出为根据Base64规范,长度为4个字节。