没有 node .js有内置的Base64编码吗?

我问这个问题的原因是crypto中的final()只能输出十六进制、二进制或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可用于获取字符串或数据段,并对结果进行Base64编码.例如:

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

缓冲区是一个全局对象,因此不需要require.使用字符串创建的缓冲区可以采用可选的编码参数来指定字符串的编码方式.可用的toStringBuffer构造函数编码如下:

"ascii"-仅适用于7位ascii数据.这种编码方法非常简单

"utf8"-多字节编码

"ucs2"-2字节,小尾端编码的Unicode字符.信息技术

"base64"-base64字符串编码.

"二进制"——一种对原始数据进行编码的方式

Node.js相关问答推荐

nest js控制器方法调用两次

如何解决无法获得本地颁发者证书的问题

MongoDB-如何验证Document字段以仅允许特定的文件扩展名?

如何使用聚合管道交换键值对

MongoDB-$Lookup未获得适当的结果

为什么在导出的函数中调用node-sqlite3中的数据库方法时不起作用?

构建期间 Docker 容器中的 npm 安装失败

无法通过 NextJS 访问 HTTP 帖子中的正文

使用更新版本仍然找到包@angular/fire但不支持原理图

我正在try 在公共目录中使用 Express.js 项目部署 Angular 静态构建

在 linux mint 上部署 node 应用程序的最简单方法是什么?

Web3.js 脚本在监听 CreatedPairs 时退出

我们如何或可以通过 npm 和 Meteor 使用 node 模块?

socket.io 发出回调合适吗?

使用 Socket.io 将客户端连接到服务器

使用 Webpack 和 font-face 加载字体

如何在 MongoDB 上只收听 localhost

Node.js -Firebase 服务帐户私钥不会解析

node.js 在控制台上显示未定义

使用 gzip/deflate 压缩的简单 HTTP 请求