node.js有内置的base64编码吗?
我之所以这么说是因为 crypto
来自 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 回答
接受的答案包含在大于6的节点版本中被视为安全问题的内容(尽管此用例似乎可能始终将输入强制转换为字符串) .
根据documentation,不推荐使用
Buffer
构造函数 .Here是在ws库中使用它可能导致的漏洞的示例 .
代码段应为:
Buffers可用于获取字符串或数据,并对结果进行base64编码 . 例如:
缓冲区是一个全局对象,因此不需要 . 使用字符串创建的缓冲区可以使用可选的编码参数来指定字符串所在的编码 . 可用的
toString
和Buffer
构造函数编码如下:crypto现在支持base64(reference):
所以你可以这样做: