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);