728x90
비밀번호 같은 데이터는 보통 단방향 암호화 알고리즘을 사용해서 암호화한다.
단방향 암호화란 암호화된 문자열을 다시 원래 문자로 복호화를 할 수 없는 암호화다.
다시 복호화할 수 없어서 해시 함수라고 부르기도 한다.
해시 함수에 대해선 minu0807.tistory.com/45
전문적으로 상세하게 작성한 글은 아니지만 해시함수에 대해 간략하게 작성은 해두었다.
사용방법은 간단하다.
노드에서 제공하는 crypto를 가져와 쓰면 된다.
사용 방식은
const crypto = require('crypto');
const a = crypto.createHash('알고리즘').update('변환할 문자열').digest('인코딩');
이렇게 사용하면 된다.
알고리즘엔 md5, sha1, sha256, sha512 등을 사용할 수 있고,
인코딩엔 base64, hex, latin1을 사용할 수 있다.
const crypto = require('crypto');
const pw = 'password';
const hash = {
md5_base64 : crypto.createHash('md5').update(pw).digest('base64'),
md5_hex : crypto.createHash('md5').update(pw).digest('hex'),
sha256_base64 : crypto.createHash('sha256').update(pw).digest('base64'),
sha256_hex : crypto.createHash('sha256').update(pw).digest('hex'),
sha512_base64 : crypto.createHash('sha512').update(pw).digest('base64'),
sha512_hex : crypto.createHash('sha512').update(pw).digest('hex')
}
let key = Object.keys(hash);
for (key in hash) {
console.log(`${key} \t : \t ${hash[key]}`);
}
위 소스에 대한 결과는 이렇다.
인코딩 방식은 base64나 hex를 쓰는 게 좋을 듯하고 실제로 base64가 해시값이 짧아서 많이 애용한다곤 한다.
반응형
'Node.js' 카테고리의 다른 글
[NodeJS] Multer를 이용해 파일 ElasticSearch에 등록하기 (1) | 2021.11.20 |
---|---|
[NodeJS] child_process exec 한글 깨짐 해결하기 (0) | 2021.08.18 |
[NodeJS] async 와 await (0) | 2021.04.03 |
[NodeJS] node 파일 모듈화와 비구조화 할당 (0) | 2021.04.03 |
[NodeJS] node로 elasticsearch 검색하기 (0) | 2021.02.27 |