mysql 4.1~5.x에서 old_password() 함수 > 기술자료 | 해피정닷컴

mysql 4.1~5.x에서 old_password() 함수 > 기술자료

본문 바로가기

사이트 내 전체검색

mysql 4.1~5.x에서 old_password() 함수 > 기술자료

PHP mysql 4.1~5.x에서 old_password() 함수

페이지 정보


본문

php 5.2.x, mysql 4.1.x 환경

The Original (Pre-4.1) Hashing Method
The original hashing method produced a 16-byte string. Such hashes look like this:
mysql> SELECT PASSWORD('1111');
+----------------------------------------------------------------------------+
| PASSWORD('1111')                                                 |
+----------------------------------------------------------------------------+
| 45271aba0b765d95                                                 |
+----------------------------------------------------------------------------+

In MySQL 4.1.1, the hashing method was modified to produce a longer 41-byte hash value:
mysql> SELECT PASSWORD('1111');
+----------------------------------------------------------------------------+
| PASSWORD('1111')                                                 |
+----------------------------------------------------------------------------+
| *89C6B530AA78695E257E55D63C00A6EC9AD3E977   |
+----------------------------------------------------------------------------+


기존에 사용중인 DB의 password는 old_passwords=0 인 상태
새로운 환경에서는 old_passwords=1 인 상태
 
기존 사용자의 비밀번호 사용이 불가능한 상황

[ 해결방법 ]
1. 모든 회원들에게 비밀번호 재입력을 요구 -> id와 식별 불가  (X)
2. 호스팅 업체에 old_passwords=0 상태로 만들어달라 요청  (X)
3. 새로운 password를 생성해주는 함수 사용  (O)

<?php
// mysql old_password 해결 function
// 작성 :  해피정닷컴 www.happyjung.com
// 출처 : http://mytory.net/archives/3120
function old_password($password) {
    $nr=0x50305735;
    $nr2=0x12345671;
    $add=7;
    $charArr = preg_split("//", $password);
    foreach ($charArr as $char) {
        if (($char == '') || ($char == ' ') || ($char == '\t')) continue;
        $charVal = ord($char);
        $nr ^= ((($nr & 63) + $add) * $charVal) + ($nr << 8);
        $nr2 += ($nr2 << 8) ^ $nr;
        $add += $charVal;
    }
    return sprintf("%08x%08x", ($nr & 0x7fffffff), ($nr2 & 0x7fffffff));
}
// mysql old password 해결위해 function


//사용방법
echo old_password($p_pw);
?>


참고자료
http://dev.mysql.com/doc/refman/5.1/en/password-hashing.html
http://mytory.net/archives/3120

댓글목록

등록된 댓글이 없습니다.


Total 2,641건 93 페이지
  • RSS
기술자료 목록
801
MSSQL   21020  2009-09-24 20:55 ~ 2017-02-15 00:00  
800
MSSQL   15300  2009-09-24 20:03  
799
메이크샵   11358  2009-09-24 10:55  
798
Search   12403  2009-09-22 19:23  
797
일반   16702  2009-09-21 15:50  
796
ClassicASP   28239  2009-09-18 03:00 ~ 2016-03-21 00:00  
795
HTML   14939  2009-09-16 23:32 ~ 2009-09-17 00:00  
794
HTML   11420  2009-09-11 07:26  
열람
PHP   23331  2009-09-09 22:42  
792
MySQL   18689  2009-09-08 20:22  
791
MySQL   43417  2009-09-08 20:21  
790
ClassicASP   13864  2009-09-07 12:51 ~ 2016-02-11 00:00  
789
전자결제   19558  2009-09-02 18:25 ~ 2015-03-27 00:00  
788
Search   14408  2009-09-02 11:46 ~ 2009-09-21 00:00  
787
JavaScript   13100  2009-09-02 10:21  
786
WindowsServer   21773  2009-09-01 20:45 ~ 2018-12-21 15:19  
785
호스팅   29398  2009-08-31 21:03  
784
WindowsServer   26493  2009-08-27 22:42  
783
PHP   15008  2009-08-25 20:51  
782
일반   15992  2009-08-27 22:49  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.