웹마스터 팁
page_full_width">
해시로부터 주민등록번호 복호화
2008.03.12 22:38
이 스크립트를 사용하려면 다음과 같은 정보를 알고있어야 합니다.
- 생년월일
- 성별
- md5등으로 해시화 된 주민등록번호
미리보기
어디까지나 학습용 소스입니다... 악용하면 개인정보보호법에 걸리니 조심하세요 ~
Coded by Kay(fallstoofast), flixey.com
- 생년월일
- 성별
- md5등으로 해시화 된 주민등록번호
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | <?php $b_year = $_POST [ 'b_year' ]; $b_month = $_POST [ 'b_month' ]; $b_day = $_POST [ 'b_day' ]; $gender = $_POST [ 'gender' ]; $s_no_hash_str = $_POST [ 's_no_hash_str' ]; $hash_type = $_POST [ 'hash_type' ]; // error messages if (! $b_year ){ echo "* 생년을 입력하세요 "; } if (! $b_month ){ echo "* 생월을 입력하세요 "; } if (! $b_day ){ echo "* 생일을 입력하세요 "; } if (! $gender ){ echo "* 성별을 선택하세요 "; } if (! $s_no_hash_str ){ echo "* 해시화 된 주민등록 번호를 입력하세요. "; } if (! $hash_type ){ echo "* 해시 함수의 종류를 선택하세요 "; } // 모든 값이 입력되었으면 처리 시작 if ( $b_year && $b_month && $b_day && $gender && $hash_type && $s_no_hash_str ){ // 0로 패딩하기 $b_year = str_pad ( $b_year , 4, '19' , STR_PAD_LEFT); $b_month = str_pad ( $b_month , 2, '0' , STR_PAD_LEFT); $b_day = str_pad ( $b_day , 2, '0' , STR_PAD_LEFT); $b_year_det = substr ( $b_year ,0,2); $b_year = substr ( $b_year ,2,2); if ( $b_year_det == "18" ){ if ( $gender == "1" ){ $gender = "9" ; } else { $gender = "0" ; } } else if ( $b_year_det == "19" ){ if ( $gender == "1" ){ $gender = "1" ; } else { $gender = "2" ; } } else if ( $b_year_det == "20" ){ if ( $gender == "1" ){ $gender = "3" ; } else { $gender = "4" ; } } // 주번 2 처리 for ( $misc =0; $misc <=99999; $misc ++){ // 주번 2 0으로 패딩 $misc = str_pad ( $misc , 5, '0' , STR_PAD_LEFT); // pad left with 0's // 주번 1 이랑 주번 2이랑 잇기 $s_no_1 = $b_year . $b_month . $b_day ; $s_no_2 = $gender . $misc ; // 주번 전체 처리 $s_no_string = $s_no_1 . $s_no_2 .get_check_no( $s_no_1 . $s_no_2 ); // 해시화 if ( $hash_type == "md5" ){ $s_no_hash = md5( $s_no_string ); } else if ( $hash_type == "sha1" ){ $s_no_hash = sha1( $s_no_string ); } // 해시 추가하실 수 있습니다 ~ // 해시가 일치하면 루프를 브레이크처리하고 결과 출력 if ( $s_no_hash == $s_no_hash_str ){ echo " 결과: ".$s_no_string." ( ".$s_no_hash." )"; break ; } // 해시가 일치하지 않으면 현재 값 출력하고 컨티뉴 ~ else { echo "처리중: " . $s_no_string . "(" . $s_no_hash .") "; } } } // 주번 확인번호 처리 함수 function get_check_no( $s_no ){ unset( $total ); for ( $i =0; $i <13; $i ++){ $s_no [ $i ] = intval ( $s_no [ $i ]); // convert to integer } // 주민등록번호 계산 $total = $s_no [0]*2 + $s_no [1]*3 + $s_no [2]*4 + $s_no [3]*5 + $s_no [4]*6 + $s_no [5]*7 + $s_no [6]*8 + $s_no [7]*9 + $s_no [8]*2 + $s_no [9]*3 + $s_no [10]*4 + $s_no [11]*5; $total = $total %11; $check_no = 11- $total ; // 확인 번호 계산 if ( $check_no >9){ $check_no = $check_no % 10; } return $check_no ; // 결과 출력 } ?> |
미리보기
어디까지나 학습용 소스입니다... 악용하면 개인정보보호법에 걸리니 조심하세요 ~
Coded by Kay(fallstoofast), flixey.com
흠좀무.. 하기사 브루트포싱이니까 안될게 어딨나여.. --;