더북(TheBook)

먼저 randomBytes() 메서드로 64바이트 길이의 문자열을 만듭니다. 이것이 salt가 됩니다. pbkdf2() 메서드에는 순서대로 비밀번호, salt, 반복 횟수, 출력 바이트, 해시 알고리즘을 인수로 넣습니다. 예시에서는 10만 번 반복해서 적용한다고 했습니다. 즉, sha512로 변환된 결괏값을 다시 sha512로 변환하는 과정을 10만 번 반복하는 겁니다.

▲ 그림 2-10 pbkdf2

변환을 너무 많이 반복하는 것은 아닌지 걱정될 수도 있지만, 1초 정도밖에 걸리지 않습니다. 이는 컴퓨터의 성능에 좌우되므로 조금 느리다 싶으면 반복 횟수를 낮추고, 너무 빠르다 싶으면 1초 정도가 될 때까지 반복 횟수를 늘립니다.