아래 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바이트 패스워드를 사용할 수 있을것 같습니다.
댓글 4개
게시글 목록
| 번호 | 제목 |
|---|---|
| 34706 | |
| 34693 | |
| 34563 | |
| 34536 | |
| 34521 | |
| 34480 | |
| 34479 | |
| 34466 | |
| 34437 | |
| 34436 | |
| 34435 | |
| 34406 | |
| 34398 | |
| 34387 | |
| 34382 | |
| 34375 | |
| 34364 | |
| 34336 | |
| 34294 | |
| 34293 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기