PHP에서 Crypt () 함수는 SHA-256 및 SHA-512를 기반으로 한 해시 암호화를 포함하여 다양한 암호화 알고리즘을 지원하는 강력한 암호화 암호화 도구입니다. 이 두 알고리즘은 crypt () 함수에서 $ 5 $ 와 $ 6 $ 의 접두사로 구별됩니다. 이 기사는이 두 가지 방법을 사용하여 암호를 암호화하고 해당 샘플 코드를 제공하는 방법을 자세히 설명합니다.
crypt () 는 PHP의 일원 암호화에 사용되는 기능으로, 일반적으로 암호 해싱에 사용됩니다. 그것을 사용할 때는 "소금"을 지정하여 암호화 알고리즘 및 암호화 결과를 제어 할 수 있습니다.
string crypt(string $string, string $salt)
$ String : 암호화 해야하는 원래 문자열입니다.
$ SALT : 암호화 알고리즘과 그 구성은 알고리즘에서 알고리즘에 이르기까지 다양합니다.
SHA-256은 일반적으로 사용되는 암호화 해시 함수로, Crypt () 함수의 $ 5 $ 접두어에 의해 활성화됩니다. 선택적으로 "라운드"및 사용자 정의 소금 값을 추가 할 수 있습니다.
$password = 'mypassword';
$salt = '$5$rounds=5000$mysaltvalue$';
$hash = crypt($password, $salt);
echo $hash;
설명 :
$ 5 $는 SHA-256의 사용을 명시합니다.
라운드 = 5000 암호화 라운드 수를 설정합니다 (선택 사항).
mySaltValue 는 사용자 정의 할 수있는 소금 값 문자열입니다.
암호화 결과는 쉽게 식별하기 위해 $ 5 $ 로 시작합니다.
예제 출력은 다음과 같습니다.
$5$rounds=5000$mysaltvalue$5O2dlyLbMFx.kPQzMt4HZG4lDHzs9DGx85xuRSkjRA/
마찬가지로 SHA-512는 Crypt () 를 통해 구현 될 수 있으며 접두사를 $ 6 $ 로 변경하십시오.
$password = 'mypassword';
$salt = '$6$rounds=10000$customsalt$';
$hash = crypt($password, $salt);
echo $hash;
설명 :
$ 6 $ anable SHA-512 암호화.
라운드 = 10000은 10000 암호화 반복이 수행되었음을 나타냅니다.
세관은 소금 가치입니다.
예제 출력은 다음과 같습니다.
$6$rounds=10000$customsalt$WXnQmvLQu.wNcB3VJmfYB/mURR3p8ddmdvYqTbWn1l6gBBR4vlmMHI8LtkYmK5I24T2MGk7pDODDZAxU2ueCd0
안전을 위해 소금 값은 가능한 한 무작위 여야합니다. 소금 값을 생성하는 간단한 기능은 다음과 같습니다.
function generateSalt($length = 16) {
return bin2hex(random_bytes($length / 2));
}
$password = 'mypassword';
$salt = '$6$rounds=10000$' . generateSalt() . '$';
$hash = crypt($password, $salt);
echo $hash;
사용자 비밀번호 저장 : 사용자 비밀번호를 일반 텍스트로 저장하는 것이 좋습니다. 안전한 소금 값과 적절한 라운드를 가진 crypt ()를 사용하는 것은 안전한 방법입니다.
암호 비교 : 비밀번호를 확인할 때 사용자 입력은 동일한 소금 값으로 다시 암호화 한 다음 저장된 해시 값과 비교해야합니다.
HTTPS 전송 : https://m66.net 과 같은 보안 프로토콜을 통해 암호화 된 데이터가 전송되어 Man-in-the-Middle 공격을 피하십시오.
이 기사를 통해 PHP의 Crypt () 함수를 사용하여 $ 5 $ 와 $ 6 $를 결합하여 SHA-256 및 SHA-512를 기반으로 보안 암호화를 구현할 수 있습니다. 이 방법은 로그인 인증 및 사용자 정보 보호와 같은 여러 시나리오에 적합합니다. 강력한 소금 값 전략과 높은 라운드 수 설정을 결합하면 데이터 보안이 크게 향상 될 수 있습니다.