2012-07-18 4 views
8

로그인 시스템을 설정하려고하는데 하나의 문제를 해결할 수 없습니다 : PHP에서 md5();PHP md5()가 MySQL md5와 다른 출력을 제공합니다.

$password = md5("brickmasterj"); 
return $password; 

반환 :

3aa7b18f304e2e2a088cfd197351cfa8 

그러나 MySQL의 동등한 나에게 짧은 버전 제공 : PHP에서 MySQL을 ... 예를 들어

,보다

3aa7b18f304e2e2a08 

을 무엇이입니다 문제? 그리고 암호를 확인하는 동안 어떻게이 작업을합니까?

+0

당신이/업데이트를 삽입하거나 MySQL의의 MD5 출력을 선택하는 사용하여 PHP를 사용하여 호출 할 수 있습니다 MySQL의 테이블에 가야하나요? 열 너비/크기가 18 자 밖에되지 않는 느낌입니다. – Gavin

답변

8

나는 암호 필드의 길이를 설정 테이블의 컬럼의 길이 문제를 추측 적어도 32

+0

맞습니다. mysql의 값이 PHP 생성 문자열의 시작이고 길이가 18 자임을 알 수 있습니다 :) – mishu

+0

감사합니다. 문제가 발생했습니다. 열 길이가 최대입니다. – Jers

2

간단한 쿼리를 할 것입니다 경우 MySQL은 < (32)의 길이를 반환 안돼 SELECT md5('brickmasterj')처럼 표시됩니다. 이제는 너비가 충분하지 않은 열에 값을 삽입 할 가능성이 큽니다.

2

데이터베이스 필드의 길이는 32 자입니까? mysql의 md5를 사용하여 데이터베이스에 쓰고 있습니까?

+0

고마워, 그게 문제 였어, 열 길이 => -1 .... 길이에 최대가있었습니다. 너는 아주 프로 야. – kinaesthesia

0

해시 크기가 항상 고정되어있는 경우. 귀하의 경우 해시 크기는 128 비트입니다. ASCII 문자열로 변환 할 때 16 진수 만 포함 된 32 자 문자열이됩니다. 당신이 변수 문자를 저장하는 그렇다면 길이이어야 32 예를해야한다 : password varchar(32) 은 다음 select password from table where password =md5($password);

관련 문제