3-2. SHA256 해시 함수 사용하기

Node.js 에는 암호화를 위한 crypto 라는 모듈이 내장되어있습니다.

SHA256 해싱을 하는 방법은 다음과 같습니다:

const crypto = require('crypto');

const password = 'abc123';
const secret = 'MySecretKey1$1$234';

const hashed = crypto.createHmac('sha256', secret).update(password).digest('hex');

console.log(hashed);

일반 SHA256 과, HMAC SHA256 은 해싱 방식이 조금 다른데요, HMAC SHA256 의 경우엔 데이터를 주어진 비밀키(secret) 와 함께 해싱을 하고, 해싱된 결과물을 비밀키와 함께 다시한번 해싱을 합니다.

이렇게 함으로서, 해시의 보안이 강화됩니다.

한번 위 코드를 src/index.js 의 하단부에 넣어보세요. 콘솔에 해시가 제대로 찍히나요?

2873413f1c0b757400be1e65f4edb2b1f7b354cf497a6811d4e1ff92b4e0d3f0
heurm server is listening to port 4000
Successfully connected to mongodb

이를 테스팅 하였다면, 방금 작성한 코드를 지우고 우리가 사용할 비밀키를 .env 파일에 저장을 하세요.

.env

PORT=4000
MONGO_URI=mongodb://localhost/heurm
SECRET_KEY=MySecretKey1$1$234

그 다음에는 hash 라는 함수를 account.js 파일에 만들어주겠습니다.

src/models/account.js

const mongoose = require('mongoose');
const { Schema } = mongoose;
const crypto = require('crypto');

function hash(password) {
    return crypto.createHmac('sha256', process.env.SECRET_KEY).update(password).digest('hex');
}

const Account = new Schema({
    (...)
});

module.exports = mongoose.model('Account', Account);

results matching ""

    No results matching ""