2017-10-10 7 views
1

나는 ascii-armor가 아니어야하는 file.pgp라는 PGP 암호화 파일이 있습니다. 내가 GNU의 base64로 인코더를 사용하고 때NodeJS에 대해 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 64 기수 도구

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

을, 나는 성공적으로 재 변환 할 수는 다음과 같습니다 원래의 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

완벽하게 작동했습니다! 고맙습니다! –