기본 콘텐츠로 건너뛰기

3월, 2015의 게시물 표시

md5

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를 생산하는 방식  -  이 솔팅을 한번이 아닌 여러번 돌리거나 커스터마이징 하여 더욱 복호화가 힘든 다이제스트를 만들어 낼 수 있다.  - jBCrypt 라이브러리 사용 http://www.mindrot.org/projec