메뉴 건너뛰기

Dev tips

PHP PHP5 에서 mysql password, old_password 구현

taknim 2009.01.07 01:43 조회 수 : 12893 추천:2864

http://www.zeroboard.com/?mid=mgrc_qna&search_target=title&page=6&document_srl=14177181&sort_index=readed_count&order_type=aschttp://blog.naver.com/zsssd/150033288221mysql 4.1.x 이하 옛날 password() 함수 - old_password()

        /**
         * @brief mysql old_password 의 php 구현 함수
         * 제로보드4나 기타 mysql4.1 이전의 old_password()함수를 쓴 데이터의 사용을 위해서
         * mysql의 password.c 소스 참조해서 구현함
         **/
    function mysql_pre4_hash_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));
    }

/** 5.0 이상일 경우
        function mysql_pre4_hash_password($password) {
            $nr = 1345345333;
            $add = 7;
            $nr2 = 0x12345671;

            settype($password, "string");

            for ($i=0; $i<strlen($password); $i++) {
                if ($password[$i] == ' ' || $password[$i] == '\t') continue;
                $tmp = ord($password[$i]);
                $nr ^= ((($nr & 63) + $add) * $tmp) + ($nr << 8);
                $nr2 += ($nr2 << 8) ^ $nr;
                $add += $tmp;
            }
            $result1 = sprintf("%08lx", $nr & ((1 << 31) -1));
            $result2 = sprintf("%08lx", $nr2 & ((1 << 31) -1));

            if($result1 == '80000000') $nr += 0x80000000;
            if($result2 == '80000000') $nr2 += 0x80000000;

            return sprintf("%08lx%08lx", $nr, $nr2);
        }
**/


mysql 4.1.x 이상 새로운 password() 함수 - password()

function mysql_new_password( $pw ) {
    return (strlen($pw) > 0) ? strtoupper('*'.sha1(sha1($pw, true))) : ($pw === null ? null : '');
}


번호 제목 글쓴이 날짜 조회 수
314 ext3grep – ext3 복구를 쉽게 taknim 2009.06.20 8375
313 구글을 이용한 rapidshare 에 등록된 파일 검색 taknim 2009.06.19 9415
312 폼관련 스크립트 짤때 맨날 인클루드 해서쓰는 함수들 taknim 2009.06.17 7458
311 [객체지향] this / __get() / __set() / clone / autoload / :: taknim 2009.06.12 9277
310 [Oracle] ORA-00600, ORA-06544, ORA-06553 오류 발생시 taknim 2009.06.09 23848
309 [php.ini] auto_prepend_file, auto_append_file 설정 taknim 2009.06.04 11660
308 IE6 에서 SELECT z-index 문제 taknim 2009.06.04 10216
307 리눅스에서 삼바서버 연결하기, 끊기 (mount, umount) taknim 2009.05.29 12346
306 VNC사용시 number keypad숫자가 안 먹을때 taknim 2009.05.29 11955
305 문자열에서 문자 하나하나를 html 형식(&#)으로 변경하기 taknim 2009.05.14 8019
304 이미 설치된 아파치에 rewrite 모듈 추가 설치 taknim 2009.04.30 11885
303 MS-SQL 링크드 서버 만들기 taknim 2009.03.20 12177
302 특정 레코드 앞뒤로 합계 구하기(over,range,PRECEDING,following) taknim 2009.02.05 9911
301 StrConv 함수 - 로케일 변환 taknim 2009.01.30 10825
300 javascript 로 stylesheet 컨트롤할때 키워드 매칭표 taknim 2009.01.22 6786
299 iframe 크기 자동조절 (네이버) - 파이어폭스가능 taknim 2009.01.22 7584
298 POST방식으로 다른 charset Action에 Data 넘겨주는 방법 taknim 2009.01.22 10254
297 mysql 자동 최적화 / 복구 스크립트 taknim 2009.01.16 9802
296 [KISA] mod security 매뉴얼 및 동영상 taknim 2009.01.14 10667
295 유용한 함수 pack, unpack, ip2long, long2ip taknim 2009.01.13 33387