Blowfish 암호를 기반으로 설계된 암호화 함수이며 현재까지 이용중인 가장 강력한 해시 메커니즘 중 하나입니다.
단방향 암호화는 평문을 암호화 할 수는 있지만 암호화된 문자를 다시 평문으로 복호화가 불가능한 방식입니다. 주로
hash
알고리즘을 이용하여 단방향 암호화를 구현합니다.
npm install bcrypt --save
hash
는 동기, hashSync
는 비동기 방식입니다.
파라미터로 넣은 숫자 12는 암호화에 사용되는 Salt로, 값이 높을 수록 암호화 연산이 증가합니다. 하지만 암호화하는데 속도가 느려집니다 그래서 10~14정도로 사용합니다
const bcrypt = require('bcrypt')
// 동기
const password = '1234'
const encryptedPassowrd = bcrypt.hashSync(password, 10) // sync
// 비동기
const password = '1234'
bcrypt.hash(password, 10, (err, encryptedPassowrd) => {
// async callback
})
// 동기
const password = '1234'
const encodedPassword = '$2a$10$tUUfk1E0jGr90ntHxl/wE.lzrVvAQfxJ7nRo3RYXi2XqJtlv2h.UW'
const same = bcrypt.compareSync(password, encodedPassword) // sync
// 비동기
const password = '1234'
const encodedPassword = '$2a$10$tUUfk1E0jGr90ntHxl/wE.lzrVvAQfxJ7nRo3RYXi2XqJtlv2h.UW'
bcrypt.compare(password, encodedPassword, (err, same) => {
// async callback
})
Sync가 붙지 않으면 비동기 방식으로 콜백을 받아서 처리하게 끔 되어있습니다.
Sync가 붙으면 동기 방식으로 메서드 기능에 맞게 데이터를 리턴을 받게 끔 되어있습니다.