js 파일에서 로그인 정보가 있는 파일에 salt를 선언하고 아무런 값들을 넣는다.

(모든 유저가 공통된 salt 를 가지고 있을 때, md5로 암호화하기 )

var salt = '@##!#ajdksa443534';

salt 를 선언하고,

cmd 창을 통해서 node 를 실행한다.

md5salt 그리고 pwd 를 정의하고, saltpwd 를 합친 값을 md5 를 통해서 암호화한다.

> var md5 = require('md5');
undefined
> var salt = '@##!#ajdksa443534';
undefined
> var pwd = '111';
undefined
> md5(salt+pwd);
'49fe39cb993d956e412f0701cee43401'

이렇게 두 변수를 더해서 암호화한 것을 tracker 사이트에 쳐보면, 제대로 복호화를 하지 못한다.

썜통이다~

썜통이다~

왜냐하면, salt 값으로 더해진 값을 복호화하는 것은 굉장히 어렵기 때문이다.

하지만, 모든 사용자에게 동일한 salt 값을 pwd 에 더해서 사용한다면, 한 사용자의 비밀번호가 노출되면 다른 사용자들의 암호의 보안 역시 문제가 생긴다.

이 때문에, 각 사용자마다 salt 값을 다르게 둬서 암호화를 하는 것이 좋다.

이렇게 되면 만약, 동일한 비밀번호를 설정한 두 사용자의 같은 비밀번호를 저마다 다른 salt 를 통해서, 다르게 설정할 수 있다. 최종적인 hash 코드가 달라지게 된다.

(개개인 마다 다른 salt를 정의한 md5 암호화 모듈)

app.post('/auth/login', function(req, res) {
  var users = [
    {
      username: 'Juni_K',
      salt: '138989&&^&%^%$JKSJK',
      password: 'e8530b0e97642f0601a6acdb5d501b99',
      displayName: 'JHK'
    },
    {
      username: 'K8805',
      salt: 'dsadzc@@*888(*(*sad))',
	    password: 'c8b1aca598a7b2628b67131c5a8a4922',
      displayName: 'K5'
    }
  ];
  var uname = req.body.username;
  var pwd = req.body.password;
  for (var i = 0; i < users.length; i++) {
    var user = users[i];
    if (uname === user.username && md5(user.salt+pwd) === user.password) {
      req.session.displayName = user.displayName;
      return req.session.save(function() {
        res.redirect('/welcome');
      });
    }
  }
  res.send('Who are you? <a href="/auth/login">login</a>');
});