我有一个简单的问题:如何将byte [ ]
编码为base64
格式?
我有以下代码:
var hash = CryptoJS.SHA1("payLoad");
document.writeln(hash);
hash = hash.toString();
var bytes = [];
for (var i = 0; i < hash.length; ++i)
{
bytes.push(hash.charCodeAt(i));
}
现在我想将bytes[ ]
编码为base64
格式。有没有图书馆可以做到这一点?
我将非常感谢您的帮助!
答案 0 :(得分:0)
btoa
和atob
使用字符串,将它们视为字节数组,因此,要使用这两个函数,应首先转换整数数组(前提是它们的范围为0- 255)转换为字符串。
对我有用的是以下两个简单功能:
b64encode = function(x) {
return btoa(x.map(function(v){return String.fromCharCode(v)}).join(''))
};
b64decode = function(x) {
return atob(x).split('').map(function(v) {return v.codePointAt(0)});
};
我相信您可以用更好的风格来写它们。
在您的情况下,尽管您的数据已经是正确的格式,但是在将其转换为32位整数数组之前。我认为,您将数组称为bytes
的事实只会误导您。之后,btoa
转换了array肿的数组,而不是hash
中的字节数组。