질문 : 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
버퍼는 전역 개체이므로 필요하지 않습니다. 문자열로 생성 된 버퍼는 선택적 인코딩 매개 변수를 사용하여 문자열의 인코딩을 지정할 수 있습니다. 사용 가능한 toString
및 Buffer
생성자 인코딩은 다음과 같습니다.
'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
'개발관련 > other' 카테고리의 다른 글
iterator를 스트림으로 변환하는 방법 (0) | 2021.08.28 |
---|---|
json.net을 사용하여 null 인 경우 클래스의 속성을 무시하는 방법 (0) | 2021.08.27 |
Unix 도구로 JSON 구문 분석 (0) | 2021.08.26 |
Kotlin 삼항 조건부 연산자 (0) | 2021.08.25 |
Facebook Flux보다 Redux를 사용하는 이유 (0) | 2021.08.25 |