PBKDF2 (Password-Based Key Derivation Function 2)는 패스워드를 단순 해싱 하는게 아닌 password에 salt를 첨가해 iteration 만큼 해싱을 계속하여 암호화를 하는 알고리즘이다.
프로젝트를 하며 사용해볼 기회가 있었는데 url 라이센스를 체크하는데 사용을 했다.
이렇게 라이센스 체크를 구현했다.
BCrypt는 salt 생성 방식이 독특해서 찾아봤다.
이 암호화는 salt 에 prefix가 존재한다. {반복횟수} 이런식으로 시작한다.
횟수가 5라면 "$2a$05" 10이라면 "$2a$10" 이렇게 시작을 하는데 그 의미가 무엇인지 궁금해서 찾아봤다.
$2는 bcrypt 고정이고 a, b, y 이렇게 factor를 특정짓는 요소가 있는데 이는 cost를 의미한다고 이해했다. a -> y로 갈수록 hash 생성 cost가 증가하며 그만큼 안정성도 증가한다는 의미이다.
암호학의 세계도 재미난것같다.