mysql5 에 있던 41바이트 암호를 mysql4 에서 인식하게 하기 정보
mysql5 에 있던 41바이트 암호를 mysql4 에서 인식하게 하기
본문
아래 url 질문을 보고 저도 한참 생각해보다가 나름대로 찾은 방법입니다.
http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=170703&page=4
문제는 기존에 호스팅 회사에서는 41 byte 패스워드를 사용하는 mysql5 를 사용하고 있다가
소위 old_password 함수 격인 mysql4 로 넘어갔을 때인데
기존 mysql5 에서 저장되었던 41바이트 암호를 mysql4 에서 어떻게 인식할 수 있게 하느냐 입니다.
우선 mysql5 에서 password 함수를 사용한 결과
mysql> select password('1111');
+-----------------------------------------------+
| password('1111') |
+-----------------------------------------------+
| *89C6B530AA78695E257E55D63C00A6EC9AD3E977 |
+-----------------------------------------------+
1 row in set (0.02 sec)
mysql4 에서 password 함수 사용 결과
mysql> select password('1111');
+------------------+
| password('1111') |
+------------------+
| 45271aba0b765d95 |
+------------------+
1 row in set (0.00 sec)
아래는 mysql 의 password 함수 대신 php 코드만으로 mysql5 password 함수를 구현한것입니다.
<?
print mysql5_password('1111');
function mysql5_password($in) {
$passwd = sha1($in,true);
$passwd = sha1($passwd);
return "*".strtoupper($passwd);
}
?>
실행 결과
chanchan-ui-MacBook:~ chanchan$ php passwd_test.php
*89C6B530AA78695E257E55D63C00A6EC9AD3E977
위의 함수를 적절한 곳( 가령 인증 부분 ) 에 응용한다면 mysql4 기반에서도 mysql5 의 41바이트 패스워드를 사용할 수 있을것 같습니다.
3
댓글 4개
대단한 아이디어입니다.


검색 해보길 참 잘 한 것 같습니다~