crypt - 단방향 문자열 해시 정보
PHP crypt - 단방향 문자열 해시본문
crypt - 단방향 문자열 해시
설명 ¶
string crypt ( string $str [, string $salt ])
crypt () 는 표준 Unix DES 기반 알고리즘 또는 시스템에서 사용할 수있는 대체 알고리즘을사용하여 해시 된 문자열을 반환합니다.
salt매개 변수는 선택 사항입니다. 그러나 crypt () 는 암호가없는 약한 암호를 만듭니다 salt. PHP 5.6 이상에서는 E_NOTICE 오류가 발생합니다. 더 나은 보안을 위해 충분히 강한 소금을 지정하십시오.
password_hash () 는 강력한 해시를 사용하고 강력한 소금을 생성하며 적절한 라운드를 자동으로 적용합니다. password_hash () 는 간단한 crypt () 래퍼이며 기존 암호 해시와 호환됩니다. password_hash () 를사용하는것이 좋습니다.
일부 운영 체제는 둘 이상의 해시 유형을 지원합니다. 실제로 표준 DES 기반 알고리즘이 MD5 기반 알고리즘으로 대체되는 경우가 있습니다. 해시 유형은 salt 인수에 의해 트리거됩니다. 5.3 이전에는 PHP가 시스템의 crypt ()를 기반으로 설치시 사용 가능한 알고리즘을 결정했습니다. 소금을 제공하지 않으면 PHP는 MD5 crypt ()의 사용 가능 여부에 따라 표준 2 문자 (DES) 또는 12 문자 (MD5)를 자동으로 생성합니다. PHP는 CRYPT_SALT_LENGTH사용 가능한 해시가 허용하는 가장 긴 유효한 소금을 나타내는 상수 이름 을 설정합니다 .
표준 DES 기반 crypt () 는 소금을 출력의 처음 두 문자로 반환합니다. 또한 처음 8자를 사용하기 str때문에 동일한 8 자로 시작하는 긴 문자열은 동일한 결과를 생성합니다 (동일한 소금을 사용하는 경우).
crypt () 함수가 여러 해시 유형을 지원하는 시스템에서 주어진 상수가 사용 가능한지 여부에 따라 다음 상수가 0 또는 1로 설정됩니다.
CRYPT_STD_DES- 알파벳 "./0-9A-Za-z"의 2 문자 salt를 사용하는 표준 DES 기반 해시. 소금에 유효하지 않은 문자를 사용하면 crypt ()가 실패합니다.
CRYPT_EXT_DES- 확장 된 DES 기반 해시. "salt"는 밑줄 뒤에 4 바이트의 반복 횟수와 4 바이트의 소금이있는 9 문자 문자열입니다. 이들은 인쇄 가능한 문자, 문자 당 6 비트, 최하위 문자부터 인코딩됩니다. 0에서 63까지의 값은 "./0-9A-Za-z"로 인코딩됩니다. 소금에 유효하지 않은 문자를 사용하면 crypt ()가 실패합니다.
CRYPT_MD5 - $ 1 $로 시작하는 MD5 해시와 12 자짜리 소금
CRYPT_BLOWFISH- 복어는 "$ 2a $", "$ 2x $"또는 "$ 2y $", 두 자리 비용 매개 변수 "$"및 알파벳 22 자리 "./-9A- Za-z ". salt에서이 범위 밖의 문자를 사용하면 crypt ()가 길이가 0 인 문자열을 반환합니다. 2 자리 비용 매개 변수는 기본 Blowfish 기반 해싱 알고리즘에 대한 반복 횟수의 기본 2 로그이며 범위가 04-31이어야합니다.이 범위를 벗어나면 crypt ()가 실패합니다. PHP 5.3.7 이전 버전에서는 소금 접두어로 "$ 2a $"만 지원합니다. PHP 5.3.7에서는 Blowfish 구현의 보안 취약점을 수정하기 위해 새로운 접두사를 도입했습니다. 보안 수정 사항에 대한 자세한 내용은 »이 문서 를 참조하십시오 .
CRYPT_SHA256- SHA - 256 해시와 $ 5 $ 접두사가있는 16 자리의 소금. salt 문자열이 'rounds = <N> $'로 시작하면 N의 숫자 값은 Blowfish의 비용 매개 변수와 마찬가지로 해싱 루프가 실행되어야하는 횟수를 나타내는 데 사용됩니다. 기본 라운드 수는 5000이고 최소값은 1000이며 최대 값은 999,999,999입니다. 이 범위를 벗어난 N의 선택은 가장 가까운 한계로 절단됩니다.
CRYPT_SHA512- SHA-512 해시와 16 달러짜리 소금 접두사 $ 6 $. salt 문자열이 'rounds = <N> $'로 시작하면 N의 숫자 값은 Blowfish의 비용 매개 변수와 마찬가지로 해싱 루프가 실행되어야하는 횟수를 나타내는 데 사용됩니다. 기본 라운드 수는 5000이고 최소값은 1000이며 최대 값은 999,999,999입니다. 이 범위 밖의 N 선택은 가장 가까운 한계로 절단됩니다.
참고 :
PHP 5.3.0부터, PHP는 자체 구현을 포함하고 있으며, 시스템이 하나 이상의 알고리즘에 대한 지원이 부족한 경우이를 사용합니다.
매개 변수 ¶
str
해시 할 문자열입니다.
주의
CRYPT_BLOWFISH알고리즘을 사용하면 매개 변수 str길이가 최대 72 자로 잘립니다.
salt
해싱을 기반으로하는 선택적 소금 문자열입니다. 제공되지 않으면 동작은 알고리즘 구현에 의해 정의되며 예기치 않은 결과가 발생할 수 있습니다.
반환 값 ¶
해시 된 문자열 또는 13 자보다 짧은 문자열을 반환하며 실패시 소금과 다른 것으로 보장됩니다.
경고
암호의 유효성을 검사 할 때 crypt () 의 출력을 이전에 알려진 해시 와 비교하는 데 타이밍 공격에 취약하지 않은 문자열 비교 함수를 사용해야합니다 . PHP 5.6에서는 hash_equals () 를 제공합니다 .
0
댓글 0개