개발관련/other

node.js에서 Base64 인코딩을 수행하는 방법

Rateye 2021. 8. 26. 10:16
728x90
반응형

 

질문 : node.js에서 Base64 인코딩을 수행하는 방법은 무엇입니까?

node.js에는 아직 base64 인코딩이 내장되어 있습니까?

내가 이것을 묻는 이유는 crypto final() 이 16 진수, 바이너리 또는 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?

따라서 암호화 된 16 진수 출력을 base64로 인코딩하는 함수를 찾고 있습니다.

답변

버퍼 는 문자열 또는 데이터 조각을 가져오고 결과의 base64 인코딩을 수행하는 데 사용할 수 있습니다. 예를 들면 :

> console.log(Buffer.from("Hello World").toString('base64'));
    SGVsbG8gV29ybGQ=
    > console.log(Buffer.from("SGVsbG8gV29ybGQ=", 'base64').toString('ascii'))
    Hello World
    

버퍼는 전역 개체이므로 필요하지 않습니다. 문자열로 생성 된 버퍼는 선택적 인코딩 매개 변수를 사용하여 문자열의 인코딩을 지정할 수 있습니다. 사용 가능한 toStringBuffer 생성자 인코딩은 다음과 같습니다.

'ascii'-7 비트 ASCII 데이터 전용. 이 인코딩 방법은 매우 빠르며 설정된 경우 높은 비트를 제거합니다.

'utf8'-멀티 바이트 인코딩 유니 코드 문자입니다. 많은 웹 페이지 및 기타 문서 형식은 UTF-8을 사용합니다.

'ucs2'-2 바이트, 리틀 엔디안 인코딩 유니 코드 문자입니다. BMP (Basic Multilingual Plane, U + 0000-U + FFFF) 만 인코딩 할 수 있습니다.

'base64'-Base64 문자열 인코딩.

'binary'-각 문자의 처음 8 비트 만 사용하여 원시 이진 데이터를 문자열로 인코딩하는 방법입니다. 이 인코딩 방법은 더 이상 사용되지 않으며 가능한 경우 Buffer 객체를 선호하여 피해야합니다. 이 인코딩은 Node.js의 향후 버전에서 제거됩니다.

출처 : https://stackoverflow.com/questions/6182315/how-to-do-base64-encoding-in-node-js
728x90
반응형