0
請問您能否提供一種獲取javascript的方法,與perl的md5_base64
函數具有相同的結果?我目前的js環境有md5
和base64encode
函數,但我不確定如何正確使用它們。在javascript中模擬perl的md5_base64函數
我試圖寫這樣的事情,但結果從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:中md5()
和base64encode()
#!/usr/bin/perl
use Digest::MD5 qw{md5_base64};
print md5_base64("test"); // 'CY9rzUYh03PK3k6DJie09g'
請從你的JS代碼中顯示'md5('test')'的輸出。你的'hex2str'函數顯示OK - 爲了得到正確的輸出,MD5應該是'098f6bcd4621d373cade4e832627b4f6',我已經確認'window.btoa(hex2str('098f6bcd4621d373cade4e832627b4f6))'產生與你的Perl代碼相同的輸出。 – Alnitak 2014-09-10 10:49:37
是的,md5輸出是'098f6bcd4621d373cade4e832627b4f6',添加到代碼中。看起來像'base64encode'返回錯誤的結果。 – accme 2014-09-10 10:59:07
由於UTF-16編碼,你的'hex2str'函數是錯誤的。 – 2014-09-10 12:10:32