즉 암호화만 가능한 방식이기 때문에 암호화된 결과물을 통해 다시 패스워드로
변환해 줄수는 없다.
$ 2b$ 📌 10 📌 $PzmixJm3ND5E6x.📌 dakYDpuDNhIDzvqO84UoaTv/k8s8KZquT3uZ9i
👉 $ 2b$
👉 10
👉 PzmixJm3ND5E6x
👉 dakYDpuDNhIDzvqO84UoaTv/k8s8KZquT3uZ9i
비밀번호를 hashing할 경우 hashSync(비밀번호, salt숫자)를 사용하면 되고
이를 검사할 때는 compareSync(비밀번호, hashing된 비밀번호) 를 사용하면 된다.
정상적인 비밀번호인 경우 true 값을 반환한다 ( 비밀번호 틀렸을 시 false)
사용예제
const bcrypt = require('bcrypt');
const password = 'abcd1234';
// 암호화
const hashed = bcrypt.hashSync(password, 10);
console.log(`password: ${password}, hashed: ${hashed}`)
// password: abc1234
// hashed: $2b$10$PzmixJm3ND5E6x.dakYDpuDNhIDzvqO84UoaTv/k8s8KZquT3uZ9i
// check
const result = bcrypt.compareSync('abcd1234', hashed)
console.log(result)
// true
(Server 코드 작성시에는 hash, compare를 통해 비동기적으로 작성)
참조: https://auth0.com/blog/hashing-in-action-understanding-bcrypt/
🔐 공부하면서 bcrypt 외에도 SHA-2(Secure Hash Algorithm 2), PBKDF2(Password-Based Key Derivation Function), Scrypt 등의 암호화 function이 존재한 다는 것을 알게 되었다.
향 후 암호화 종류와 쓰임새에 대해 더 공부해봐야 겠다.