crypt
편도 문자열 해시
crypt()
함수는 DES, Blowfish 또는 MD5 알고리즘을 사용하여 암호화 된 문자열을 반환합니다.
이 기능은 운영 체제마다 다르게 작동하며 일부 운영 체제는 둘 이상의 알고리즘 유형을 지원합니다. 설치 중에 PHP는 사용 가능한 알고리즘과 사용 된 알고리즘을 확인합니다.
특정 알고리즘은 소금 매개 변수의 형식과 길이에 따라 다릅니다. 특정 암호화 방법을 사용하여 특정 문자열에 의해 생성 된 문자열의 수를 늘려서, 소금은 암호화를 더 안전하게 만들 수 있습니다.
다음은 crypt()
함수와 함께 사용되는 상수입니다. 이러한 상수 값은 설치 시간에 PHP에 의해 설정됩니다.
[crypt_salt_length] | 기본 암호화 길이. 길이 2와 함께 표준 DES 암호화를 사용하십시오 |
[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 HASH는 $ 1 $로 시작하는 12 자 문자열 소금 값을 사용합니다. |
[crypt_blowfish] | Blowfish 알고리즘은 다음 소금 값을 사용합니다. "$ 2A $", 2 비트 비용 매개 변수 "$"및 64 비트 문자열 "./0-9A-Za-Z"로 구성됩니다. 소금 값 으로이 범위 외부의 문자를 사용하면 crypt ()가 빈 줄을 반환합니다. 2 비트 비용 매개 변수는베이스 2에 루프 수가있는 로그이며 그 범위는 04-31입니다. 이 범위를 초과하면 crypt ()가 실패하게됩니다. |
crypt_sha256 | SHA-256 알고리즘은 $ 5 $로 시작하는 16 자 문자열 소금 값을 사용하여 해시했습니다. 소금 값 문자열이 "Rounds = <n> $"로 시작되면 N의 숫자 값은 Blowfish 알고리즘의 비용 매개 변수와 매우 유사한 해시 루프의 실행 수를 지정하는 데 사용됩니다. 루프의 기본 수는 5000, 최소값은 1000, 최대 값은 999,999,999입니다. n이 범위 외부는 가장 가까운 값으로 변환됩니다. |
crypt_sha512 | SHA-512 알고리즘은 해싱에 대해 $ 6 $로 시작하는 16 자 문자열 소금 값을 사용합니다. 소금 값 문자열이 "Rounds = <n> $"로 시작되면 N의 숫자 값은 Blowfish 알고리즘의 비용 매개 변수와 매우 유사한 해시 루프의 실행 수를 지정하는 데 사용됩니다. 루프의 기본 수는 5000, 최소값은 1000, 최대 값은 999,999,999입니다. n이 범위 외부는 가장 가까운 값으로 변환됩니다. |
이 기능이 여러 알고리즘을 지원하는 시스템에서 위의 상수가 지원되면 "1"으로 설정되며 그렇지 않으면 "0"으로 설정됩니다.
참고 : 해당 암호 해독 기능이 없습니다. crypt()
함수는 일방화 알고리즘을 사용합니다.
이 예에서는 다른 알고리즘을 테스트합니다.
<? php // 2 차 소금 if ( crypt_std_des == 1 ) { 에코 "표준 des :" . crypt ( 'something' , 'st' ) . "\ n <br>" ; } 또 다른 { echo "표준 des는 지원되지 않습니다. \ n <br>" ; } // 4 자 소금 if ( crypt_ext_des == 1 ) { 에코 "확장 된 des :" . crypt ( 'something' , '_s4..some' ) . "\ n <br>" ; } 또 다른 { echo "확장 된 des는 지원되지 않습니다. \ n <br>" ; } // $ 1 $로 시작하는 12 자 if ( crypt_md5 == 1 ) { 에코 "md5 :" . crypt ( '무언가' , '$ 1 $ somethin $' ) . "\ n <br>" ; } 또 다른 { echo "md5는 지원되지 않습니다. \ n <br>" ; } // $ 2A $로 시작하는 소금. 이중 번호의 비용 매개 변수 : 09. 22 문자 if ( crypt_blowfish == 1 ) { 에코 "블로우 피쉬 :" . crypt ( 'something' , '$ 2a $ 09 $ anexamplestringforsalt $' ) . "\ n <br>" ; } 또 다른 { echo "blowfish des는 지원되지 않습니다. \ n <br>" ; } // $ 5 $로 시작하는 16-Character Salt. 둘레의 기본 수는 5000입니다. if ( crypt_sha256 == 1 ) { 에코 "Sha-256 :" . crypt ( 'something' , '$ 5 $ Rounds = 5000 $ anexamplestringforsalt $' ) . "\ n <br>" ; } 또 다른 { echo "sha-256 지원되지 않았습니다. \ n <br>" ; } // $ 5 $로 시작하는 16-Character Salt. 주변의 기본 수는 5000입니다. if ( crypt_sha512 == 1 ) { 에코 "SHA-512 :" . crypt ( 'something' , '$ 6 $ Rounds = 5000 $ anexamplestringforsalt $' ) ; } 또 다른 { Echo "SHA-512 지원되지 않았습니다." ; } ?>
위의 코드의 출력 (운영 체제에 따라 다름) :
표준 des : stqadd7zlbbyi 확장 된 des : _S4..SOMEQXIDLBPTUU6 MD5 : $ 1 $ SOMETHIN $ 4NZKRULY6R7K7.RDEOZ0W. Blowfish : $ 2A $ 09 $ anexamplestringforsaleloukejcjrlexmf1671qw3khl49r3dfu SHA-256 : $ 5 $ Rounds = 5000 $ anexamplestringf $ kirctqsxo2wrpg5ag/hs4jti4pmonkqugwfxlvy9vu9 SHA-512 : $ 6 $ Rounds = 5000 $ anexamplestringf $ oo0skoadufxkqxjpwzo05wgrhg0dhuapbaou/ onbgpceklf/7ovm5wn6an0w2vwuga0o24olzgqpp1xki6llq0.
crypt ( str , salt )
매개 변수 | 설명하다 |
---|---|
str | 필수의. 인코딩 할 문자열을 지정합니다. |
소금 | 선택 과목. 인코딩 된 문자 수를 늘리기 위해 인코딩을보다 안전하게 만듭니다. 솔트 매개 변수가 제공되지 않으면 PHP는 함수가 호출 될 때마다 무작위로 하나를 생성합니다. |