crypt() 함수는 DES, Blowfish 또는 MD5 알고리즘을 사용하여 암호화된 문자열을 반환합니다.
이 함수는 운영 체제에 따라 다르게 작동하며 일부 운영 체제에서는 둘 이상의 알고리즘 유형을 지원합니다. 설치 시 PHP는 어떤 알고리즘을 사용할 수 있는지, 어떤 알고리즘이 사용되는지 확인합니다.
정확한 알고리즘은 salt 인수의 형식과 길이에 따라 다릅니다. 솔트는 특정 암호화 방법을 사용하여 특정 문자열에서 생성되는 문자열 수를 늘려 암호화를 더욱 안전하게 만들 수 있습니다.
다음은 crypt() 함수와 함께 사용되는 몇 가지 상수입니다. 이러한 상수 값은 설치 중에 PHP에 의해 설정됩니다.
끊임없는:
[CRYPT_SALT_LENGTH] - 기본 암호화 길이입니다. 표준 DES 암호화, 길이 2 사용
[CRYPT_STD_DES] - 알파벳 "./0-9A-Za-z"의 2자리 솔트를 사용하는 표준 DES 기반 암호화입니다. 솔트에 유효하지 않은 문자를 사용하면 함수가 실패하게 됩니다.
[CRYPT_EXT_DES] - 밑줄과 4바이트 반복 번호, 4바이트 솔트로 구성된 9자리 솔트를 사용하는 확장 DES 기반 암호화입니다. 이는 인쇄 가능한 문자(문자당 6비트)로 최하위 문자부터 인코딩됩니다. 0~63의 값은 "./0-9A-Za-z"로 인코딩됩니다. 솔트에 유효하지 않은 문자를 사용하면 함수가 실패하게 됩니다.
[CRYPT_MD5] - $1$로 시작하는 12자리 솔트를 사용한 MD5 암호화입니다.
[CRYPT_BLOWFISH] - 복어 암호화에는 $2a$, $2x$ 또는 $2y$로 시작하는 솔트, 두 자리 비용 매개변수 "$" 및 알파벳 "./0-9A-Za-z" 22자가 있습니다. 안에 . 알파벳 이외의 문자를 사용하면 함수가 길이가 0인 문자열을 반환하게 됩니다. "$" 매개변수는 Blowfish 해싱 알고리즘의 반복 횟수에 대한 기본 2 로그이며 04-31 범위에 있어야 합니다. 이 범위를 벗어나는 값을 사용하면 기능이 실패하게 됩니다.
[CRYPT_SHA_256] - SHA-256 암호화에는 $5$로 시작하는 16자 솔트가 있습니다. 솔트 문자열이 "rounds=<N>$"로 시작하는 경우 N의 숫자 값은 Blowfish의 비용 매개변수와 유사하게 해시 라운드가 실행되는 횟수를 나타내는 데 사용됩니다. 기본 주기 수는 5000이고, 최소값은 1000, 최대값은 999,999,999입니다. 이 범위를 벗어난 N 값은 가장 가까운 경계 값으로 변환됩니다.
[CRYPT_SHA_512] - SHA-512 암호화에는 $6$로 시작하는 16자 솔트가 있습니다. 솔트 문자열이 "rounds=<N>$"로 시작하는 경우 N의 숫자 값은 Blowfish의 비용 매개변수와 유사하게 해시 라운드가 실행되는 횟수를 나타내는 데 사용됩니다. 기본 주기 수는 5000이고, 최소값은 1000, 최대값은 999,999,999입니다. 이 범위를 벗어난 N 값은 가장 가까운 경계 값으로 변환됩니다.
이 함수가 여러 알고리즘을 지원하는 시스템에서 위의 상수는 지원되는 경우 "1"로 설정되고 지원되지 않는 경우 "0"으로 설정됩니다.
참고: 해당 암호 해독 기능이 없습니다. crypt() 함수는 단방향 알고리즘을 사용합니다.
암호( str,salt )
매개변수 | 설명하다 |
---|---|
str | 필수의. 인코딩할 문자열을 지정합니다. |
소금 | 선택 과목. 인코딩을 더욱 안전하게 만들기 위해 인코딩되는 문자 수를 늘리는 데 사용되는 문자열입니다. 솔트 인수가 제공되지 않으면 함수가 호출될 때마다 무작위로 생성됩니다. |
반환 값: | 암호화된 문자열을 반환하거나, 실패 시 솔트와 다름이 보장되는 13자 미만의 문자열을 반환합니다. |
---|---|
PHP 버전: | 4+ |
업데이트 로그: | PHP 5.3.7에서는 잠재적인 높은 수준의 공격을 처리하기 위해 $2x$ 및 $2y$ Blowfish 모드가 추가되었습니다. PHP 5.3.2에는 새로운 상수 SHA-256 및 SHA-512가 추가되었습니다. PHP 5.3.2부터 Blowfish는 DES로 돌아가는 대신 유효하지 않은 루프에서 "실패" 문자열("*0" 또는 "*1")을 반환합니다. PHP 5.3.0부터 PHP에는 MD5 암호화 구현, 표준 DES 구현, 확장 DES 구현 및 Blowfish 알고리즘이 함께 제공됩니다. 시스템이 위의 알고리즘을 지원하지 않는 경우에는 PHP 자체 알고리즘을 사용합니다. |
crypt() 암호화에는 htpasswd를 사용하십시오.
<?php // 비밀번호 설정 $password = ' mypassword ' ; // 해시 값을 가져오고 자동 솔트 값을 사용합니다. $hash = 암호화 ( $password ) ? >이 예에서는 다양한 해시 유형을 사용합니다.
<?php 만약에 ( CRYPT_STD_DES == 1 ) { 에코 ' 표준 DES: ' . crypt ( ' rasmuslerdorf ' , ' rl ' ) " n " ; 만약에 ( CRYPT_EXT_DES == 1 ) { 에코 ' 확장 DES : ' . crypt ( ' rasmuslerdorf ' , ' _J9..rasm ' ) . 만약에 ( CRYPT_MD5 == 1 ) { 에코 ' MD5 : ' . crypt ( ' rasmuslerdorf ' , ' $ 1 $ rasmusle $ ' ) . 만약에 ( CRYPT_BLOWFISH == 1 ) { 에코 ' 복어: ' . crypt ( ' rasmuslerdorf ' , ' $ 2a $ 07 $usesomesillystringforsalt $ ' ) . 만약에 ( CRYPT_SHA256 == 1 ) { 에코 ' SHA-256: ' . crypt ( ' rasmuslerdorf ' , ' $ 5 $ rounds = 5000 $usesomesillystringforsalt$ ' ) . 만약에 ( CRYPT_SHA512 == 1 ) { 에코 ' SHA-512: ' . crypt ( ' rasmuslerdorf ' , ' $ 6 $ rounds = 5000 $usesomesillystringforsalt$ ' ) . ?>위 코드는 다음을 출력합니다(운영 체제에 따라 다름).
표준 DES: rl.3StKT.4T8M확장 DES: _J9..rasmBYk8r9AiWNcMD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0Blowfish: $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hiSHA-256: $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6SHA-512: $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21