
암호화 bcrypt
- bcrypt는 비밀번호 암호화에 자주 사용되는 라이브러리
- 해시 함수를 활용하여 강력한 보안을 제공한다.
- 중요한 요소
- 단방향 암호화를 사용하여 저장된 비밀번호를 보호하고, 해시값 비교를 통해 비밀번호 검증을 수행한다.
bcrypt란?
bcrypt는Blowfish암호화 알고리즘 기반의 단방향 암호화 라이브러리
- 특히 bcrypt는 실제 애플리케이션에서 쉽게 구현할 수 있으며, 보안 강화를 위한 필수적인 도구로 사용하고 있다.
과정
- 보안성이 높은 해시 함수로, 솔트(Salt)를 적용하여 무작위 해시값을 생성 -> 반복 연산을 통해 해시 생성 속도를 조절 = 결과적으로 해킹을 어렵게 만들어 준다.
bcrypt 구성
- 비밀번호 해싱
- 비밀번호 검증
- compareSync: 입력한 비밀번호와 저장된 해시값을 비교하여 일치 여부를 검증
사용한 코드
bcrypt 코드 예제
const bcrypt = require("bcrypt");
const saltRounds = 10;
function hashPw(pw) {
return bcrypt.hashSync(pw, saltRounds);
}
function comparePw(inputPw, hashedPw) {
return bcrypt.compareSync(inputPw, hashedPw);
}
const originalPw = "1234";
const hashedPw = hashPw(originalPw);
console.log("암호화된 비밀번호", hashedPw);
const isMatch = comparePw("1234", hashedPw);
const isMatch2 = comparePw("12345", hashedPw);
console.log("비밀번호 일치? >>", isMatch);
console.log("비밀번호 일치? >>", isMatch2);
코드 설명
- 비밀번호 해싱:
hashSync(pw, saltRounds): 비밀번호를 입력받아 솔트 라운드를 적용하여 해시값을 생성
- 솔트 라운드가 높을수록 해시값 생성 시간이 증가 -> 보안 수준 강화
- 비밀번호 검증:
compareSync(inputPw, hashedPw): 사용자가 입력한 비밀번호를 해시화한 후 저장된 해시값과 비교하여 일치 여부를 반환
- 올바른 비밀번호는
true를 반환
- 잘못된 비밀번호는
false를 반환
결론
핵심 요약
- 단방향 암호화를 통해 복호화가 불가능한 강력한 해시값을 생성
- 솔트와 반복 연산을 사용하여 외부 공격을 어렵게 만든다.
- 비밀번호 검증 기능을 제공하여 안전하게 로그인 프로세스를 구현할 수 있다.