본문 바로가기
Node.js

Node.js: 01. 단방향 암호화

by KIha_Jung 2019. 9. 27.

1. 단방향 암호화

단방향 암호화란 복호화할 수 없는 암호화 방식이다. (암호 --> 암호화)

고객의 빌밀번호를 암호화하여 DB에 저장한다.

로그인시 입력받은 비밀번호를 같은 방법으로 암호화한 후, DB 비밀번호와 비교한다.

원래 비밀번호는 어디에도 저장되어있지 않다.

 

단방향 암호화 알고리즘은 주로 해시 기법을 사용한다.

해시 기법은 어떠한 문자열을 고정된 길이의 문자열로 바꾸는 방식이다.

2. cryptoe

다양한 방식의 암호화를 도와주는 모듈이다.

createHash('알고리즘') : 사용할 해시 알고리즘을 넣어준다.

update() : 변환할 문자열을 넣어준다.

digest('알고리즘') : 인코딩할 알고리즘을 넣어준다. 

// 단방향 암호화 알고리즘
const crypto = require('crypto');

// createHash() : 사용할 해시 알고리즘을 넣어준다
// update() : 변환할 문자열을 넣어준다
// digest() : 인코딩할 알고리즘을 넣는다.
console.log('base64:', crypto.createHash('sha512').update('비밀번호').digest('base64'));
console.log('hex:', crypto.createHash('sha512').update('비밀번호').digest('hex'));
console.log('base64:', crypto.createHash('sha512').update('다른 비밀번호').digest('base'));

 

3. pdkdf2 알고리즘

기존 문자열에 salt라고 불리는 문자열을 붙인 후 해시 알고리즘을 반복해서 적용한다.

// pbkdf2 알고리즘 적용
const crypto = require('crypto');

crypto.randomBytes(64, (err, buf) => {
    const salt = buf.toString('base64');
    console.log('salt:', salt);
    crypto.pbkdf2('비밀번호', salt, 100000, 64, 'sha512', (err, key) => {
        console.log('password:', key.toString('base64'));
    })
})

 

'Node.js' 카테고리의 다른 글

Node.js: 04. 동기 & 비동기 방식  (0) 2019.09.28
Node.js: 03. 파일 시스템 접근  (0) 2019.09.28
Node.js: 02. 양방향 암호화  (0) 2019.09.28

댓글