我有一个简单的问题:如何将 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
格式。有图书馆可以做到这一点吗?
我将感谢您的帮助!
最佳答案
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 位整数数组之前已经采用了正确的格式。我认为您将数组称为字节的事实只会误导您。之后,btoa
转换了臃肿的数组,而不是 hash
中的字节数组。
关于JavaScript : Encode byte [ ] array to base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24761778/