더북(TheBook)

해킹용 컴퓨터의 성능이 발달함에 따라 기존 해시 알고리즘들이 위협받고 있습니다만, 그에 따라 해시 알고리즘도 더 강력하게 진화하고 있습니다. 언젠가 sha512도 취약점이 발견될 것입니다. 그렇게 된다면 더 강력한 알고리즘인 sha3으로 이전하면 됩니다.

현재는 주로 pbkdf2나 bcrypt, scrypt라는 알고리즘으로 비밀번호를 암호화하고 있습니다. 그중 노드에서 지원하는 pbkdf2를 알아보겠습니다. pbkdf2는 간단히 말하면 기존 문자열에 salt라고 불리는 문자열을 붙인 후 해시 알고리즘을 반복해서 적용하는 겁니다.

pbkdf2.js

const crypto = require('crypto');

crypto.randomBytes(64, (err, buf) => {
  const salt = buf.toString('base64');
  console.log('salt:', salt);
  crypto.pbkdf2('비밀번호', salt, 100000, 64, 'sha512', (err, key) => {
    console.log('password:', key.toString('base64'));
  });
});