在Node.js中将字节转换为十六进制和将十六进制转换为字节

3

我使用以下方式生成了一个随机的16字节:

var crypto = require('crypto');
iv   = crypto.randomBytes(16);

如果我使用console.log打印iv,它会输出以下内容
<Buffer 54 8e 09 f7 03 56 a1 23 75 94 fb e4 89 e3 36 84>

当我使用iv.toString('hex')函数时,它会输出548e09f70356a1237594fbe489e33684。现在我想再将上述字符串转换回原始内容,即将548e09f70356a1237594fbe489e33684转换为。
<Buffer 54 8e 09 f7 03 56 a1 23 75 94 fb e4 89 e3 36 84>

我尝试这样做:-
  var buffer_data = new Buffer(res_iv);
      console.log(buffer_data);

它生成了错误的输出 <Buffer 35 34 38 65 30 39 66 37 30 33 35 36 61 31 32 33 37 35 39 34 66 62 65 34 38 39 65 33 33 36 38 34>

同时尝试使用

var convertHex = require('convert-hex'); 

但是我无法获得所需的输出。

有人知道我该如何实现这个吗?

2个回答

4

您可以使用 Buffer.from

var convertHex = Buffer.from('548e09f70356a1237594fbe489e33684', 'hex');

转换十六进制。未获得期望的输出。 - VIKAS KOHLI
你使用的是哪个版本的Node? - ponury-kostek
尝试了6+版本和7+版本。现在我能够得到所需的输出。非常感谢你。 - VIKAS KOHLI
你是对的。实际上我正在控制台输出一些其他数据,导致出现了问题。所以现在两个都可以工作。 - VIKAS KOHLI
“Buffer.from” 在 v5.10.0 中被添加,所以我很惊讶这对你不起作用。 - ponury-kostek
显示剩余2条评论

0
 const buf1 = Buffer.alloc(16, '548e09f70356a1237594fbe489e33684', 'hex');

 // Prints: 

<Buffer 54 8e 09 f7 03 56 a1 23 75 94 fb e4 89 e3 36 84>

 console.log(buf1);

它将打印所需的输出。 @ponury-kostek 感谢您提供的想法,实际上对我有帮助。

或者

@ponury-kostek 答案(repl.it/HN3e):-

 Buffer.from('548e09f70356a1237594fbe489e33684', 'hex');



 // Prints: 

<Buffer 54 8e 09 f7 03 56 a1 23 75 94 fb e4 89 e3 36 84>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接