MD5 이것저것161001 에그
MD5 란 ?• 128 비트 암호화 해시 함수• 예 ) MD5(“ 야근” ) =
0672f7ac30e1ea7ee1baf8a637757b45
128 비트 / 암호화 / 해시 함수
해시 함수• 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑• 예 ) f(x) = x % 10 은 어떤 정수든 1 자리 정수로 매핑
f(9) = 9f(28) = 8f(119) = 9
해시 함수 - 용도• 빠른 데이터 검색• 예 ) 많은 수의 숫자 데이터해시 함수는 f(x) = x % 10
9 -> f(9) = 9 -> 9 번 슬롯에 추가28 -> f(28) = 8 -> 8 번 슬롯에 추가119 -> f(119) = 9 -> 9 번 슬롯에 추가...
이후 119 를 찾을 때는 9 번 슬롯에 추가된 숫자들에 대해서만 검사하면 됨
해시 함수 - 용도• 해시 값이 가능한 고르게 분포해야 함• 앞의 예에서 하나의 슬롯에 몰리게 되면 그 슬롯 검색에는 많은 시간 소요
해시 함수 - 특징• 같은 입력값이라면 같은 출력값• 어려운 말로 결정론적 (deterministic) 알고리즘
• 즉 , 두 해시 값이 다르다면 원래의 데이터도 다르다 .
128 비트 / 암호화 해시 함수
암호화 해시 함수• 해시 값으로부터 원래의 입력값과의 관계를 찾기 어려운 해시 함수• 예로 든 f(x) = x % 10 는 입력값과 해시 값들을 비교해보면 함수 구하기 매우 쉬움• 함수가 충분히 복잡하고 해시 값이 최대한 충돌하지 않아야 한다 .
128 비트 암호화 해시 함수
128 비트• 출력값이 항상 128 비트• 16 진수 (4 비트 ) 숫자 32 개
MD5 란 ?• 128 비트 암호화 해시 함수• 임의의 길이의 메시지를 입력받아 128 비트짜리 고정 길이의 출력값을 내는 복잡한 함수
해킹은 당했지만 비밀번호는 안전합니다
• 비밀번호를 직접 DB 에 저장하지 않고 암호화 해시 함수를 거친 해시 값을 저장• 비밀번호가 abc123 이라면
MD5(“abc123”) = e99a18c428cb38d5f260853678922e03• 로그인 시 입력한 비밀번호의 해시 값과 DB 에 저장된 해시 값을 비교• 해시 값으로부터 입력값을 끌어낼 수 없어야 하…겠지만 !
https://crackstation.net/
레인보우 테이블
• 입력값 별 해시 값을 미리 구해둠• 단순한 입력 값이라면 암호화의 효과는 없다고 봐야 함
알고리즘 결함• 해시 충돌• 해시 함수가 서로 다른 두 개의 입력값에 대해 동일한 출력값을 내는 상황
• MD5 의 해시 충돌을 찾아내는 많은 방법들이 발견됨• 최근에는 SHA-3 와 같은 다른 해시 함수 사용
Salt• 어떤 알고리즘을 이용해도 abc123 을 비밀번호로 쓰는 사용자는 나올 것• 아예 시스템에서 입력값에 특정 값 (salt) 을 덧붙여 해시 생성
MD5 의 뜻밖의 용도
MD5 배틀• 이름을 입력하면 MD5 해시 값을 계산하여 캐릭터를 생성 , 배틀
출처 :본격 2 차세계대전 만화 -9- < 바바롯사 >Homa comics by 굽시니스트(http://homa.egloos.com/3446540)
다시 한번 해시 함수의 특징• 입력값이 같다면 출력값이 같다 .• 해시 값이 고르게 분포한다 .• 입력값에 미세한 변화만 줘도 출력값에 많은 변화가 일어난다 .• 산사태 효과 (avalanche effect)
랜덤 캐릭터 생성에 응용• 입력값이 같다면 출력값이 같다 .• 같은 캐릭터를 다시 만들 수 있다 .
• 해시 값이 고르게 분포한다 .• 다양한 캐릭터가 만들어진다 .
• 입력값에 미세한 변화만 줘도 출력값에 많은 변화가 일어난다 .• 특정 스탯을 노린 입력값을 만들 수 없다 .
• 최강의 이름 찾기 , 특정 이름을 이길 수 있는 이름 찾기 같은 플레이 가능
뻘 아이디어• 랜덤 히로인과 랜덤 주인공이 나오는 비주얼 노벨• 캐릭터 특성에 따라 시나리오 자동 진행• 재미 요소• 랜덤 캐릭터 생성• 특정 이름의 히로인과 해피 엔딩 볼 수 있는 주인공 이름 찾기
참고 자료• MD5 - 위키백과
https://ko.wikipedia.org/wiki/MD5• MD5 배틀 - 나무위키
https://namu.wiki/w/MD5%20%EB%B0%B0%ED%8B%80• 안전한 패스워드 저장 – NAVER D2
http://d2.naver.com/helloworld/318732
Top Related