2013-01-09 3 views
0

나는 crypt() 기능을 사용하고 있지만 내 구현이 맞는지 모르겠어요.PHP의 토굴 기능 및 알고리즘

crypt('PE','12345') 

내가 설명서를 읽고 난 12345 같은 다섯 개 문자 소금으로 선택하는 알고리즘을 모르는 :이 같은가 someting을 작성하는 경우 내가 사용 알고리즘 어떤 종류의 .

+0

[여기] (http://stackoverflow.com/questions/4447913/php-crypt-function-on-different-os/4447952#4447952) – vanneto

+0

을 참조하십시오. 비밀번호가 맞다면 많은 번거 로움을 덜 수 있습니다. 이 lib를 다운로드하십시오. https : // github.com/ircmaxell/password_compat – SDC

+0

@SDC 이것은 목적이 아닙니다. 나는 단지 어떤 알고리즘을 PHP가 내 소금과 함께 사용하는지 알고 싶다. – Pete

답변

1

는 시스템에 따라 다릅니다.

당신은 PHP에 의해 정의 된 상수의 값을 확인할 수 있습니다, 시스템이 지원을 결정합니다. 상수 CRYPT_SALT_LENGTH는 염분 문자열의 예상 길이를 표시합니다. DES는 2 자리의 소금을 허용합니다. MD5는 12자를 허용합니다. CRYPT_STD_DES, CRYPT_EXT_DES, CRYPT_MD5, CRYPT_BLOWFISH와 같은 플래그가 설정되어 있는지 확인할 수도 있습니다. 이를 위해 다음과 같은 명령을 실행 메아리 CRYPT_MD5

1 그것이 지원 나타내는 번호; a 0은 그렇지 않다는 것을 나타냅니다.

다음은 MD5 기반 알고리즘으로를 반환하지 않을 경우이 시스템에서 사용할 수 및 경우 표준 유닉스 DES 기반 알고리즘를 사용하여 해시 문자열을 반환합니다 여기 http://www.techrepublic.com/article/the-perils-of-using-php-crypt/1058691

0

crypt()는 표준 Unix DES 기반 알고리즘 또는 시스템에서 사용할 수있는 대체 알고리즘을 사용하여 해시 된 문자열을 반환합니다.

는 PHP 문서

+0

네,하지만 분명히 그것은 매개 변수를주는 당신의 소금에 달려 있습니다. 그리고 나의 소금 12345는 문서화 된 소금이 아닙니다. – Pete

1

에서이 기본 시스템에 따라 달라집니다. 대신 hash()을 사용하는 것이 좋습니다. 예를 들어.

$algos = hash_algos(); 
if (in_array("sha256", $algos)) { 
    $str = hash ("sha256", "something" . "salt"); 
} 

이렇게하면 일관되게 하나의 해싱 알고리즘을 사용할 수 있습니다. 문서가 말한대로

0

crypt() 세부 사항을 읽어보십시오. 그리고 당신은 당신이 다음 목록에서 사용하고자하는 알고리즘의 유형을 설정할 수 있습니다

  1. CRYPT_STD_DES합니다.
  2. CRYPT_EXT_DES.
  3. CRYPT_MD5.
  4. CRYPT_BLOWFISH.
  5. CRYPT_SHA256.
  6. CRYPT_SHA512.

이 목록은 다음과 같이 사용할 수 있습니다 : 당신은 당신이하여 기본값을 사용하지 않으려면 사용하기 전에 사용하고자하는 알고리즘의 유형을 선택해야 함을 의미

//setting the value to 1 means enable this algorithm 
//which will return true or false. 
if (CRYPT_STD_DES == 1) { 
    echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "\n"; 
} 

if (CRYPT_EXT_DES == 1) { 
    echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "\n"; 
} 

if (CRYPT_MD5 == 1) { 
    echo 'MD5:   ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "\n"; 
} 

if (CRYPT_BLOWFISH == 1) { 
    echo 'Blowfish:  ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n"; 
} 

if (CRYPT_SHA256 == 1) { 
    echo 'SHA-256:  ' . crypt('rasmuslerdorf', '$5$rounds=5000$usesomesillystringforsalt$') . "\n"; 
} 

if (CRYPT_SHA512 == 1) { 
    echo 'SHA-512:  ' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$') . "\n"; 
} 

체계.