JavaScript : Encode byte [ ] array to base64

标签 javascript encoding base64 arrays

我有一个简单的问题:如何将 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 格式。有图书馆可以做到这一点吗?

我将感谢您的帮助!

最佳答案

btoaatob 使用字符串,它们将其视为字节数组,因此要使用这两个函数,您应该首先转换整数数组(前提是它们范围为 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/

相关文章:

javascript - 在 JavaScript 中修改 RegEx 匹配

security - Base 64 编码的目的是什么?为什么在 HTTP 基本身份验证中使用它?

javascript - 将 MediaRecorder 音频转换为 base64

java - Spring MVC + Hibernate编码问题

php - 无法在 Laravel 5 中读取从 BLOB 转换回的 PDF?

javascript - 添加 "A"-指令到父节点并执行

javascript - 将值替换为 ng-repeat 中的 API 值

javascript - javascript中的search()方法无法在包含 "\\ch"的字符串中搜索它

php - MySQL HY000 1366 : Trying to store 4 byte utf8 character

C++:套接字编码(使用 TeamSpeak)