Hashing : 어떠한 문자열에 '임의의 연산'을 적용하여 다른 문자열을 변환하는 것(암호화)
1.모든 값에 대해 값을 계산하는데 오래걸리지 않아야 한다.
2.최대한 해시 값을 피해야 하며, 모든 값은 고유한 해시 값을 가진다.
3.아주 작은 단위의 변경이라도 완전히 다른 해시 값을 가져야 한다.
Salt : 암호화해야 하는 값에 어던 '별도의 값'을 추가하여 결과를 변형하는 것
해싱을 할때 해당값을 그대로 암호화를 시키면 결과가 늘 동일함
-> 해시된 값과 원래값을 대응시키는 '레인보우 테이블'을 만들어 decoding 해버리는 경우가 생김
원래의 값에 별도의 값인 Salt를 더해 해싱을 진행한다면
매 암호화마다 값이 다르기 때문에 외부자가 decoding 하기가 어려워짐
기존: (원래값) => (hash 값)
Salt 사용하면 : (원래값) + (Salt 값) => (hash 값)
Salt 사용시 주의점
1. Salt는 유저와 패스워드 별로 유일한 값을 가져야 합니다.
2. 사용자 계정을 생성할 때와 비밀번호를 변경할 때마다 새로운 임의의 Salt를 사용해서 해싱해야 합니다.
3. Salt는 절대 재사용하지 말아야 합니다.
4. Salt는 DB의 유저 테이블에 같이 저장되어야 합니다.