프레임워크+라이브러리/Express
Node.js / crypto module(단방향 암호화) / 해시 생성
moonionn
2020. 7. 17. 12:52
crypto?
Node.js 내장 암호화 모듈입니다.
비밀번호를 데이터베이스에 저장하기 위해서는 암호화 과정을 필수로 거쳐야 합니다.
아래는 공식사이트에서의 crypto 설명란입니다.
https://nodejs.org/api/crypto.html#crypto_cryptonodejs.org/api/crypto.html
해시 생성(단방향 암호화)
해시를 생성하는 방법으로 암호작업을 하면, 결과값을 원래의 비밀번호로 복구시키지 못합니다.
즉, 복호화가 되지 않는다는 점이 특징입니다.
.createHash(algorithm:string, options)
createHash()는 말그대로 해시를 생성합니다.
createHash()에는 해싱 알고리즘이 매개 변수로 들어옵니다.
'sha256', 'sha512' 등이 대표적으로 쓰입니다.
const crypto = require('crypto');
const hash = crypto.createHash('sha512');
.update(data, inputEncoding)
update()는 생성된 해시에 암호데이터를 업데이트 해줍니다.
인코딩의 값을 따로 적어넣지 않고, 암호의 타입이 string이라면 자동으로 utf8을 적용합니다.
const crypto = require('crypto');
const hash = crypto.createHash('sha512')
.update('this is my password');
.digest(encoding)
마지막으로 해쉬 표기법을 정할때 사용되는 메소드입니다.
base64, hex, latin1 과 같은 인코딩방식이 매개변수로 들어옵니다.
인코딩 인자를 넣지 않으면 Buffer값이 결과로 나타납니다.
const crypto = require('crypto');
const hash = crypto.createHash('sha512')
.update('this is my password')
.digest('hex');
//result: 9dd4c926e02225a393f5e628b793260969c26e61d7d6e6b829659d25cdc95a62d55b86a6c763009b789eae9429254f201126e561a097ff1482e7072c97a80dcf