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,634건 93 페이지
  • RSS
기술자료 목록
794
MSSQL   15342  2009-09-24 20:03  
793
메이크샵   11390  2009-09-24 10:55  
792
Search   12426  2009-09-22 19:23  
791
일반   16738  2009-09-21 15:50  
790
ClassicASP   28282  2009-09-18 03:00 ~ 2016-03-21 00:00  
789
HTML   14962  2009-09-16 23:32 ~ 2009-09-17 00:00  
788
HTML   11434  2009-09-11 07:26  
열람
PHP   23381  2009-09-09 22:42  
786
MySQL   18757  2009-09-08 20:22  
785
MySQL   43453  2009-09-08 20:21  
784
ClassicASP   13888  2009-09-07 12:51 ~ 2016-02-11 00:00  
783
전자결제   19569  2009-09-02 18:25 ~ 2015-03-27 00:00  
782
Search   14426  2009-09-02 11:46 ~ 2009-09-21 00:00  
781
JavaScript   13127  2009-09-02 10:21  
780
WindowsServer   21805  2009-09-01 20:45 ~ 2018-12-21 15:19  
779
호스팅   29433  2009-08-31 21:03  
778
WindowsServer   26514  2009-08-27 22:42  
777
PHP   15025  2009-08-25 20:51  
776
일반   16012  2009-08-27 22:49  
775
PHP   15353  2009-08-25 20:50  

검색

해피정닷컴 정보

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

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