PHP에서 crypt () 함수는 일방형으로 문자열을 암호화하는 데 사용되는 함수이며, 주로 암호 해싱을 처리하는 데 사용됩니다. 이 기능은 제공된 "소금"값에 기초하여 다른 암호화 알고리즘을 자동으로 선택하여 유연한 암호화 방법을 달성합니다. Crypt () 와 적용 가능한 시나리오가 지원하는 암호화 알고리즘을 이해하면 개발자가 보안 설계에서보다 합리적인 선택을하는 데 도움이됩니다.
사용 방법 :
$hash = crypt('mypassword', 'rl');
설명 :
이것은 가장 빠른 암호화 방법 중 하나입니다. 두 문자의 소금 값을 사용하고 13 자 해시 값을 생성합니다.
해당 시나리오 :
오래된 시스템과 호환됩니다.
현대적인 응용 프로그램에는 덜 안전하고 무차별 적 공격에 취약하기 때문에 권장되지 않습니다 .
사용 방법 :
$hash = crypt('mypassword', '_J9..rasm');
설명 :
_ 로 시작하는 소금 값으로 알고리즘을 트리거하여 더 많은 소금 수준과 반복을 지정할 수 있습니다.
해당 시나리오 :
오래된 시스템에도 준비되었지만 표준 des보다 약간 강합니다.
새로운 프로젝트에서 사용하는 것이 여전히 권장되지 않습니다 .
사용 방법 :
$hash = crypt('mypassword', '$1$someSalt$');
설명 :
소금이 $ 1 $ 로 시작하면 crypt ()는 MD5 해싱 알고리즘을 사용합니다. 출력의 길이는 34 자입니다.
해당 시나리오 :
고성능 요구 사항이 있지만 안전 요구 사항이 매우 높은 환경.
점차 안전한 알고리즘으로 대체되었으며 민감한 정보를 저장하는 데 권장되지 않습니다.
사용 방법 :
$hash = crypt('mypassword', '$2y$10$usesomesillystringforsalt$');
설명 :
$ 2A $ , $ 2B $ 또는 $ 2Y $ 로 시작하는 소금은 Blowfish 알고리즘 (예 : Bcrypt)을 사용하여 표시됩니다. 숫자 10 은 계산 복잡성을 나타내는 비용 요인이며 기본 범위는 일반적으로 4 ~ 31입니다.
해당 시나리오 :
사용자 비밀번호 암호화에 권장됩니다.
보안이 높고 비용 요인 조정을 지원하며 크루 르스 포스 크래킹에 효과적으로 저항 할 수 있습니다.
사용 방법 :
// SHA-256
$hash256 = crypt('mypassword', '$5$rounds=5000$mysalt$');
// SHA-512
$hash512 = crypt('mypassword', '$6$rounds=5000$mysalt$');
설명 :
$ 5 $ 로 시작하는 것은 SHA-256을 의미하며 $ 6 $ 로 시작하는 것은 SHA-512를 의미합니다. 반복 횟수는 라운드 매개 변수를 통해 조정하여 계산 비용을 늘릴 수 있습니다.
해당 시나리오 :
외부 라이브러리를 도입 할 필요없이 높은 보안이 필요한 상황.
비교적 느슨한 성능 요구 사항이있는 백엔드 암호화 처리.
일부 Linux 시스템의 사용자 비밀번호 암호화에 사용됩니다.