Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/45.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在base64中为NodeJ编码PGP加密的二进制文件_Node.js_Encryption_Base64 - Fatal编程技术网

Node.js 在base64中为NodeJ编码PGP加密的二进制文件

Node.js 在base64中为NodeJ编码PGP加密的二进制文件,node.js,encryption,base64,Node.js,Encryption,Base64,我有一个名为file.PGP的PGP加密文件,它不能是ascii格式,而是二进制格式。看起来是这样的: �P��3E��Q� �i`p��� ����&�9 �ֻ�<P�+�[����R0��$���q����VJ��hu���bE"2��M1r��j�K�v�@6�3E�Ҳ�A�W{Z ��FEԭ�YV��6g�V���e�,I�Zpw�r��8׆ �mc��h��n���k�p�>JH\�G�6��M1|>�G�fl�J���6�� ج�� �_��y8�..

我有一个名为file.PGP的PGP加密文件,它不能是ascii格式,而是二进制格式。看起来是这样的:

�P��3E��Q� �i`p���
����&�9
�ֻ�<P�+�[����R0��$���q����VJ��hu���bE"2��M1r��j�K�v�@6�3E�Ҳ�A�W{Z
��FEԭ�YV��6g�V���e�,I�Zpw�r��8׆
�mc��h��n���k�p�>JH\�G�6��M1|>�G�fl�J���6��
ج��
   �_��y8�..{���_⮵���F���~�vt
                             �8AB;z����m^��Xp���VӅCzD�ճn

����{+d�3�"��N�1p�
var stdin = process.openStdin();
var data = "";

stdin.on('data', function(chunk) {
  data += chunk;
});

stdin.on('end', function() {
    console.log(new Buffer(text, 'binary').toString('base64'));
});
let stdin = process.openStdin();
let data = [];

stdin.on('data', chunk => {
  data.push(chunk);
});

stdin.on('end', () => {
  console.log(Buffer.concat(data).toString('base64'));
});
用法:
$cat file.gpg | node base64.js


输出看起来与GNU base64提供的不同。此外,我无法将其转换回原始文件。gpg文件-GnuPG找不到任何要解密的内容。

发生这种情况的原因是,您在其注释中传递的是字符串而不是缓冲区

您可以这样做:

�P��3E��Q� �i`p���
����&�9
�ֻ�<P�+�[����R0��$���q����VJ��hu���bE"2��M1r��j�K�v�@6�3E�Ҳ�A�W{Z
��FEԭ�YV��6g�V���e�,I�Zpw�r��8׆
�mc��h��n���k�p�>JH\�G�6��M1|>�G�fl�J���6��
ج��
   �_��y8�..{���_⮵���F���~�vt
                             �8AB;z����m^��Xp���VӅCzD�ճn

����{+d�3�"��N�1p�
var stdin = process.openStdin();
var data = "";

stdin.on('data', function(chunk) {
  data += chunk;
});

stdin.on('end', function() {
    console.log(new Buffer(text, 'binary').toString('base64'));
});
let stdin = process.openStdin();
let data = [];

stdin.on('data', chunk => {
  data.push(chunk);
});

stdin.on('end', () => {
  console.log(Buffer.concat(data).toString('base64'));
});

我不确定最终的解决方案是什么,但我认为问题的一部分在于,当您将
添加到
数据
时,它被转换为字符串而不是二进制。我非常确定Node有缓冲区的概念,它将用于二进制内容。