md5
http://ko.wikipedia.org/wiki/MD5
urlencoder, base64하고 비슷하지만 좀 다르다.
비슷한건 key가 없다는것.
다른점은 복호화가 불가능한 단방향 해시함수.
이런 단방향 해시함수는 사용하는 이유는 크게 2가지다.
1. '비밀번호'
2. 고정길이문자 출력
- 비밀번호
예전엔 비밀번호에 사용을 했지만,
지금은 세상이 좋아져서 복호화가 될법하니 쓰지 말라는게 정설이다.
md5 변환 예제 (deni: http://md5.rednoize.com/)
1 -> c4ca4238a0b923820dcc509a6f75849b
2 -> c81e728d9d4c2f636f067f89cc14862c
자릿수가 32자리라 요즘 컴퓨터 처리속도에 비해 만만하다는 얘기다.
- 고정길이문자 출력
이렇게든 저렇게든 입력값에 상관없이 출력문자의 길이수는 32자리로 일정하다.
지금 당장은 생각이 안나는데, 분명 쓸만한 곳이 있을것 같다.
※ 보안점
1. 길이가 좀더 길게 나오는 다른 해시함수 사용
2. 솔팅(salting)
- 원본메시지를 해시함수 돌리기전에 원본메시지에 개발자만 알 수 있는 별도의 임의문자열을 포함하여 digest를 생산하는 방식
- 이 솔팅을 한번이 아닌 여러번 돌리거나 커스터마이징 하여 더욱 복호화가 힘든 다이제스트를 만들어 낼 수 있다.
- jBCrypt 라이브러리 사용 http://www.mindrot.org/projects/jBCrypt
※ 참고
- 네이버 개발블로그 : 안전한패스워드저장 (http://helloworld.naver.com/helloworld/318732)
댓글
댓글 쓰기