2017-10-10 19 views
1

私はPGPで暗号化されたファイルfile.pgpを持っていますが、これはascii-armorではなくバイナリでなければなりません。それは次のようになります。BaseJSのBase64でPGP暗号化バイナリを符号化する

�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� 

私はこの文字列を取得しています、GNUのbase64でエンコーダを使用していた場合:

$ cat file.gpg | base64 hQEMA1DujfGcM0WiAQgAvcIMUfydsSDmaWBwnoWACrsapePpJpU5Co68276SK2XVBqY2YyNUgzAF oawkpMjfcQS+7+nJVkrb7Gh1h4L9YkUiMo+dTTFyzs5qskuECNZ25UA2rzNF+NKyq0HZV3sXWg3P AwZNZbNJIAc4xWlBNfsNoda7zhk8UJArj1sAiKPw5VIKjahGRdSt2FlWurs2Z5EXVriLG0aHZbAs SeCjWnB3Aalyoo8414aGbWOr5WjU7rpugBLw52uAcJgcPkpIXMJjCEf4gTbc1k0xfD4YjUejZmyH H0rYAAHw3DbjyQrYrLmHC9Vfm655HBU40xceLi5/e4n2Dxge+F/irrW9o9JGAfCf5OZ+gXZ0Ggv9 t620m704QUI7eryy0ddtXoGsWHCxu4gaVtOFQ3pEp9WzZghuC5j1/c57K2T4lzP+IvEfo07fMRFw tg==

GNUのbase64でツールを使用すると、私は正常にそれを再変換することができます元のpgpファイルを解読して解読します。

NodeJSで同様のツールを実装したいと考えています。 ASCIIテキストは正常に変換できますが、バイナリコンテンツは変換できません。私の仮のコードは次のようになります。

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')); 
}); 

使用法:$ cat file.gpg | node base64.js

出力がどのようなGNU base64方式の提供に違って見えます。また元のfile.gpgファイルに戻すことはできません - GnuPGは解読するものは何も見つかりません。

+0

私は最終的な解決策がどうなるかわからないんだけど、私は、問題の一部はなると思う、あなたがdata' 'に' chunk'を追加するとき、それはバイナリの代わりに文字列に変換されています。私はNodeがバイナリコンテンツに使用されるバッファという概念を持っているとはかなり確信しています。 – theGleep

答えて

1

これは、そのコメントにGleepポイントとして文字列を渡し、バッファを渡さないために発生します。

あなたはこのようにそれを行うことができます。

let stdin = process.openStdin(); 
let data = []; 

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

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

は完璧に機能しました!ありがとうございました! –