如何在 Node.js 中进行 Base64 编码?

2024-04-17

Node.js 是否有内置 Base64 编码?

我问这个的原因是final() from crypto只能输出十六进制、二进制或ASCII数据。例如:

var cipher = crypto.createCipheriv('des-ede3-cbc', encryption_key, iv);
var ciph = cipher.update(plaintext, 'utf8', 'hex');
ciph += cipher.final('hex');

var decipher = crypto.createDecipheriv('des-ede3-cbc', encryption_key, iv);
var txt = decipher.update(ciph, 'hex', 'utf8');
txt += decipher.final('utf8');

根据文档,update()可以输出Base64编码的数据。然而,final()不支持 Base64。我试过了,它会坏掉。

如果我这样做:

var ciph = cipher.update(plaintext, 'utf8', 'base64');
    ciph += cipher.final('hex');

那我应该用什么来解密呢?十六进制还是 Base64?

因此,我正在寻找一个函数来对加密的十六进制输出进行 Base64 编码。


Buffers http://nodejs.org/docs/latest/api/buffer.html可用于获取字符串或数据并对结果进行 Base64 编码。例如:

> console.log(Buffer.from("Hello World").toString('base64'));
SGVsbG8gV29ybGQ=
> console.log(Buffer.from("SGVsbG8gV29ybGQ=", 'base64').toString('ascii'))
Hello World

The Buffer构造函数是一个全局对象,因此不需要任何要求。使用字符串创建的缓冲区可以采用可选的编码参数来指定字符串采用的编码方式。toString and Buffer构造函数编码如下:

'ascii' - 仅适用于 7 位 ASCII 数据。这种编码方式很 快,并且如果设置的话将剥离高位。

'utf8' - 多字节编码 统一码字符。许多网页和其他文档格式使用 UTF-8。

'ucs2' - 2 字节、小端编码的 Unicode 字符。它 只能编码 BMP(基本多语言平面,U+0000 - U+FFFF)。

'base64' - Base64 字符串编码。

'binary' - 一种原始编码方式 仅使用每个数据的前 8 位将二进制数据转换为字符串 特点。这种编码方法已被弃用,应避免使用 尽可能支持 Buffer 对象。该编码将被删除 在 Node.js 的未来版本中

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Node.js 中进行 Base64 编码? 的相关文章

随机推荐

  • 如何在 Mac OS X 上以 root 身份运行脚本? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我应该在 Mac OS X 终端上输入什么才能以 root 身份运行脚本 与任何基于 UNIX 的环境一样 您可以使用sudo http xkcd c
  • SVG 渐变颜色

    Hi I m working with SVG here I trying to add the gradient to SVG like this 白色和灰色渐变 但我无法实现所需的输出 谁能指出我正确的方向
  • 如何在引导日期选择器中突出显示特定日期?

    我正在使用引导日期选择器 我需要突出显示一些随机日期 例如 我需要突出显示 1 3 8 20 21 16 26 30 等日期 您能告诉我如何在引导日期选择器中突出显示这些随机日期吗 根据 Amphetamachine 的建议在 bootst
  • 信任 Google API 响应对象和所有权

    我已经在我的网络应用程序中成功实现了 Google Login 使用适用于客户端 Web 应用程序的 OAuth 2 0 https developers google com identity protocols OAuth2UserAg
  • 如何在 Python 中运行 .exe 文件

    我正在尝试在 python2 7 中运行 exe 文件 我已经尽了一切努力来搜索它 这是我尝试过的一些代码 subprocess Popen r C Programs Files Internet Explorer iexplore exe
  • 调试时 VS2012 的 VSIX 扩展未运行

    我在 Visual Studio 2012 中创建了一个新的 VSIX 扩展项目 并编写了一个 MEF 分类器 作为测试 该分类器应该简单地突出显示 mylang文件 以下是我的 NET 4 5 代码的相关部分 internal stati
  • 如何通过 powershell 或 C# 使用本地 IP 远程更新 azure webapp 防火墙

    如何使用本地 PC IP 地址远程更新我的 azure webapp 防火墙 以便通过 powershell 或 C 进行管理 我已经查看了文档 但我只能从实际服务器本身找到如何操作 而不能远程操作 我可以让 Visual Studio 弹
  • 可绘制资源中带有形状的文本

    我可以在可绘制资源中创建文本形状吗 我在谷歌上搜索了很多 但什么也没找到 这是我的绘图文件
  • 退出和中止有什么区别?

    The abort http ruby doc org core 2 1 1 Kernel html method i abort文件说abort will 通过调用 Kernel exit false 立即有效地终止执行 立即 到底是什么
  • 如何根据内容调整QTableView的高度?

    在我的布局中 动态生成的 QTableView 似乎已调整大小以仅显示一行 我想让表视图的容器有一个滚动条 而不是单个表视图 它应该显示完整的内容 显然 Qt 没有为此内置任何东西 您需要手动计算和设置大小 这就是我垂直调整大小的方法 Qt
  • XMLSerializer.Serialize 上的 .NET OutOfMemoryException

    我有一个网站 每当它到达我的代码中的以下位置时 就会抛出 OutOfMemoryException XmlSerializer xs new XmlSerializer t xoverrides 看到只有在网络服务器上时才会发生这种情况 我
  • 使用 Thrift 通过共享内存进行 IPC 通信

    我找不到关于如何使用 apache thrift 通过共享内存进行 ipc 通信的足够示例 我的目标是在 thrift 的帮助下序列化现有的类 然后通过共享内存发送到另一个进程 在该进程中我在 thrift 的帮助下再次反序列化它 现在我正
  • 如何循环访问 IP 地址范围?

    我想在 IP 地址范围上执行一组网络任务 一旦范围大于 C 类网络 我就无法枚举该范围内的所有主机 我希望能够使用网络掩码迭代网络的所有主机255 255 240 0 From 192 168 0 100 To 192 168 10 100
  • LinqToExcel:Excel 列中的不同值

    对于各位专家来说 这可能是一件非常简单的事情 但我对 C 4 和 INTEROP 并不熟悉 因此 我很困惑 这是我的问题 我有一个包含重复数据的 Excel 列 我想将其修剪为仅具有唯一值 数据如下所示 ColA ColB 10 Adam
  • 角度表单验证 ng-disabled 不起作用

    我正在尝试在我的博客文章表单中使用角度表单验证 更具体地说是禁用 ng 的表单 由于某些原因 我无法弄清楚提交按钮没有被禁用 除非所有三个输入字段都有效 否则它应该被禁用 谢谢您的帮助 这是我的博客模板 div div class cont
  • 如何在 Google 电子表格中插入列?

    我想将新数据添加到工作表的开头 开头 所以我必须在工作表中添加一个新的 A1 列 但我找不到任何 PHP 的 API 示例 现在我用这个附加数据 body new Google Service Sheets ValueRange value
  • 如果未使用 scp 命令指定目标路径,则文件位置

    要将文件夹从本地计算机复制到我使用的服务器 scp r local folder user server path 现在我忘了第一次指定目标路径 scp r local folder user server 现在有人知道该文件夹是否已被复制
  • 如何在视频标签中播放AVI文件?

    我想知道是否可以让浏览器在一个文件中播放 AVI 文件video tag 我在网上找到的所有谈论它的内容都集中在 MP4 和 Ogg 格式 但没有人谈论 AVI 格式 我发现的唯一解决方案是放弃video标记并使视频可以使用 JW Play
  • Lua 如何创建可用于变量的自定义函数?

    对于像 io close 这样的方法 你可以像这样使用它 file close 有没有办法创建一个像这样工作的自定义函数 您可以在变量上调用它 对我来说 我尝试使用它通过使用 string find 查找空格来将参数与文本文件分开 所以在文
  • 如何在 Node.js 中进行 Base64 编码?

    Node js 是否有内置 Base64 编码 我问这个的原因是final from crypto只能输出十六进制 二进制或ASCII数据 例如 var cipher crypto createCipheriv des ede3 cbc e