为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

不负相思意 2019-07-27 14:59:55
如何在node.js中进行Base64编码?node.js有内置的base64编码吗?为什么我问这个的原因是,final()从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');然后我应该用什么解密?Hex或base64?因此,我正在寻找一个函数来对我的加密十六进制输出进行base64编码。谢谢。
查看完整描述

3 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

缓冲区可用于获取字符串或数据,并对结果进行base64编码。例如:

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

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

'ascii' - 仅适用于7位ASCII数据。这种编码方法非常快,如果设置将剥离高位。

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

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

'base64' - Base64字符串编码。

'binary' - 一种通过仅使用每个字符的前8位将原始二进制数据编码为字符串的方法。不推荐使用此编码方法,应尽可能避免使用Buffer对象。在将来的Node版本中将删除此编码。


查看完整回答
反对 回复 2019-07-27
?
墨色风雨

TA贡献1853条经验 获得超6个赞

接受的答案包含在大于6的节点版本中被视为安全问题的内容(尽管此用例似乎可能始终将输入强制转换为字符串)。

Buffer构造是根据过时文件

以下是在ws库中使用它可能导致的漏洞示例。

代码段应为:

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


查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 1273 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信