English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP 기초 튜토리얼

PHP 고급 튜토리얼

PHP & MySQL

PHP 참조 매뉴얼

PHP crypt() 함수 사용법 및 예제

PHP String 문자열 함수 매뉴얼

crypt() 함수는 일방적인 문자열 해시를 반환합니다

문법

string crypt ( string $str [, string $salt ] )

정의와 사용법

 는 기준 UNIX DES 알고리즘 또는 시스템에서 사용 가능한 다른 대체 알고리즘을 기반으로 한 해시 문자열을 반환합니다.
파라미터는 선택 사항입니다. 그러나 소금 값이 없으면 crypt()가 생성하는 비밀번호는 약한 비밀번호가 됩니다. php 5.6부터는 소금 값이 없으면 E_NOTICE 수준의 오류를 표시합니다. 보다 좋은 보안을 위해 충분히 강력한 소금 값을 지정하십시오.
password_hash()는 강력한 해시 알고리즘을 사용하여 충분히 강력한 소금 값을 생성하고 자동으로 적절한 횟수를 수행합니다. password_hash()는 crypt()의 간단한 래퍼이며, 기존의 비밀번호 해시와 완전히 호환됩니다. password_hash()를 권장합니다.
때문에, 어떤 시스템도 여러 종류의 해시 유형을 지원할 수 있습니다. 실제로, 때로는 MD5 의 알고리즘은 기준 DES 알고리즘을 대체하는 알고리즘으로 사용됩니다. 이러한 해시 유형은 소금 값 파라미터로 인해 트리거됩니다. 5.3 이전에, PHP는 설치 시 시스템의 crypt()를 기반으로 사용 가능한 알고리즘을 결정합니다. 소금 값을 제공하지 않으면 PHP는 자동으로 소금 값을 생성합니다. 2 개의 문자(DES) 또는 12 개의 문자(MD5의 소금 값에 따라 다릅니다.5 crypt()의 사용 가능성을 나타냅니다. PHP는 사용 가능한 해시의 가장 긴 가능한 소금 값을 나타내는 CRYPT_SALT_LENGTH 상수를 설정했습니다.
기준 DES 알고리즘을 기반으로 한 crypt()는 출력 내용의 시작 위치에 두 글자의 소금 값을 반환합니다. 또한, str의 시작 부분만 사용 8 개의 문자로, 더 긴 문자열도 동일 8 개의 문자를 시작하는 문자열도 동일한 결과를 생성합니다(동일한 소금 값이 사용된 경우).
crypt() 함수가 다중 해시를 지원하는 시스템에서, 아래의 상수는 해당 유형이 사용 가능한지 여부에 따라 0 또는 1:

  • CRYPT_STD_DES - 표준 DES 알고리즘을 기반으로 한 해시는 "./0-9A-Za-z" 문자 중의 두 문자로 구성됩니다. 소금에 불법적인 문자를 사용하면 crypt()가 실패합니다.

  • CRYPT_EXT_DES - 확장된 DES 알고리즘을 기반으로 한 해시입니다. 이 해시의 소금은 9 개의 문자로 구성된 문자열입니다. 이는 1 개의 밑줄 뒤에 4 바이트 반복 횟수와 4 바이트 소금으로 구성됩니다. 이들은 인쇄 가능한 문자로 인코딩되며, 각 문자 6 비트, 유효 비트가 가장 적은 순으로 우선합니다. 0에서 63 으로 인코딩됩니다./0-9A-Za-z"를 사용하여 해시를 수행합니다. 소금에 불법적인 문자를 사용하면 crypt()가 실패합니다.

  • CRYPT_MD5 - MD5 해시는 $로 시작된1$으로 시작되는 12 문자 문자열 소금을 사용합니다.

  • CRYPT_BLOWFISH - Blowfish 알고리즘은 다음과 같은 소금을 사용합니다: "$2a$", 두 자리 cost 파라미터, "$" 및 64 으로 "./0-9A-Za-까지이며, 이 범위를 초과하는 문자를 소금에 사용하면 crypt()가 빈 문자열을 반환합니다. 두 자리 cost 파라미터는 반복 횟수로 사용되며 2 의 로그를 기록하면, 범위는 0에서4-31을 기반으로 한 로그를 기록하면, 범위를 초과하면 crypt()가 실패합니다. PHP 5.3.7 이전 버전에서는 "$2a$"를 소금 접두어로 사용해야 합니다. 5.3.7 에서 새로운 접두어를 도입하여 Blowfish 구현에서의 보안 위험을 수정했습니다. 이 수정에 대한更多信息은 » 이 문서를 참조하세요. 결론적으로, PHP 개발자가 PHP에 대한 작업을 수행하려면 5.3.7및 이후 버전에서 개발하려면, "$2y$" 대신 "$2a$"

  • CRYPT_SHA256 - SHA-256 알고리즘은 $로 시작된5$으로 시작되는 16 문자 문자열 소금 값을 사용하여 해시합니다. 소금 문자열이 "rounds=<N>$"로 시작되면, N의 숫자 값은 해시 반복 횟수를 지정하는 데 사용됩니다. 이것은 Blowfish 알고리즘의 cost 파라미터와 유사합니다. 기본 반복 횟수는 5000, 가장 작은 값은 1000, 가장 큰 값은 999,999,999이 범위를 초과하는 N은 가장 가까운 값으로 변환됩니다.

  • CRYPT_SHA512 - SHA-512 알고리즘은 $로 시작된6$으로 시작되는 16 문자 문자열 소금 값을 사용하여 해시합니다. 소금 문자열이 "rounds=<N>$"로 시작되면, N의 숫자 값은 해시 반복 횟수를 지정하는 데 사용됩니다. 이것은 Blowfish 알고리즘의 cost 파라미터와 유사합니다. 기본 반복 횟수는 5000, 가장 작은 값은 1000, 가장 큰 값은 999,999,999이 범위를 초과하는 N은 가장 가까운 값으로 변환됩니다.

반환 값

그것은 해시 문자열을 반환합니다

파라미터

순번파라미터와 설명
1

str

해시할 문자열

온라인 예제

아래의 예제를 시도해보세요. crypt() 함수는 자동으로 소금 값을 사용하여 해시 값을 얻습니다:

<?php
      //암호 설정
   $input = 'information';  
   
   // 자동으로 소금 값을 사용하여 해시 값을 얻습니다 
   $hash = crypt($input);
?>
테스트를 보세요‹/›

PHP String 문자열 함수 매뉴얼