md5 http://ko.wikipedia.org/wiki/MD5 단일 MD5 연산. MD5에서는 이 단일 연산을 64번 실행한다. 16개의 연산을 그룹화한 4 라운드로 묶인다. F는 각 라운드에서 사용하는 비선형 함수를 가리키며, 각 라운드에서는 각각 다른 함수를 사용한다. M i 는 입력 메시지의 32-비트 블록을 의미한다. s 는 s칸 만큼의 레프트 로테이션을 가리키며, s는 각 연산 후 값이 변한다. 은 모듈로 2 32 덧셈을 말한다. urlencoder, base64하고 비슷하지만 좀 다르다. 비슷한건 key가 없다는것. 다른점은 복호화가 불가능한 단방향 해시함수. 이런 단방향 해시함수는 사용하는 이유는 크게 2가지다. 1. '비밀번호' 2. 고정길이문자 출력 - 비밀번호 예전엔 비밀번호에 사용을 했지만, 지금은 세상이 좋아져서 복호화가 될법하니 쓰지 말라는게 정설이다. md5 변환 예제 (deni: http://md5.rednoize.com/) 1 -> c4ca4238a0b923820dcc509a6f75849b 2 -> c81e728d9d4c2f636f067f89cc14862c 자릿수가 32자리 라 요즘 컴퓨터 처리속도에 비해 만만 하다는 얘기다. - 고정길이문자 출력 이렇게든 저렇게든 입력값에 상관없이 출력문자의 길이수는 32자리로 일정하다. 지금 당장은 생각이 안나는데, 분명 쓸만한 곳이 있을것 같다. ※ 보안점 1. 길이가 좀더 길게 나오는 다른 해시함수 사용 2. 솔팅(salting) - 원본메시지를 해시함수 돌리기전에 원본메시지에 개발자만 알 수 있는 별도의 임의문자열을 포함하여 digest를 생산하는 방식 - 이 솔팅을 한번이 아닌 여러번 돌리거나 커스터마이징 하여 더욱 복...