在javascript中模拟perl的md5_base64函数

时间:2014-09-10 10:37:39

标签: javascript perl md5

你能否建议一种方法来获取与perl的md5_base64函数相同的结果?我当前的js环境有md5base64encode个函数,但我不确定如何以正确的方式使用它们。

我试过写这样的东西,但结果与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'

1 个答案:

答案 0 :(得分:0)

分别检查md5()base64encode()的输出。

的输出应为098f6bcd4621d373cade4e832627b4f6。 如果您在浏览器中运行,您还应该能够使用window.btoa()作为Base64编码器功能。

我已经单独验证window.btoa(hex2str('098f6bcd4621d373cade4e832627b4f6'))产生与Perl代码相同的输出(除了window.btoa在末尾包含一些==填充以使输出为根据Base64规范,长度为4个字节。