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 195건 7 페이지
  • RSS
기술자료 목록
75
PHP   21682  2010-07-21 21:47 ~ 2024-03-22 08:47  
74
PHP   21998  2010-07-10 15:48 ~ 2021-01-03 22:59  
73
PHP   27578  2010-04-13 23:06  
72
PHP   25876  2010-03-24 18:51 ~ 2022-09-27 10:16  
71
PHP   19053  2010-03-21 12:30 ~ 2020-11-15 19:34  
70
PHP   19351  2010-03-18 22:00 ~ 2016-03-17 00:00  
69
PHP   20762  2010-03-16 22:11 ~ 2020-02-08 11:51  
68
PHP   25941  2010-03-08 19:42 ~ 2010-03-08 00:00  
67
PHP   37979  2009-10-23 02:37 ~ 2015-05-26 00:00  
66
PHP   23365  2009-10-21 19:46 ~ 2009-10-21 00:00  
65
PHP   15755  2009-10-14 11:12  
64
PHP   17464  2009-10-10 10:00 ~ 2017-05-19 00:00  
열람
PHP   23394  2009-09-09 22:42  
62
PHP   15041  2009-08-25 20:51  
61
PHP   15373  2009-08-25 20:50  
60
PHP   25104  2009-08-25 20:46 ~ 2020-04-08 11:35  
59
PHP   45668  2009-08-21 01:29 ~ 2017-08-03 00:00  
58
PHP   12871  2009-08-06 22:35  
57
PHP   16117  2009-07-22 18:49  
56
PHP   15803  2009-04-17 19:59 ~ 2010-03-21 00:00  

검색

해피정닷컴 정보

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

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