
password_hash 함수의 결과를 다시 password_hash 함수에 넣는 이유는 암호화 알고리즘의 특성 때문입니다. password_hash 함수는 암호화 알고리즘을 자동으로 선택하여 암호화를 수행합니다. 이 알고리즘은 매번 암호화할 때마다 다르기 때문에, 암호화된 결과를 다시 암호화하는 과정을 거치면 암호화된 결과가 달라집니다.
password_verify 함수는 암호화된 결과를 다시 암호화하는 과정을 거치지 않고, 암호화된 결과를 원래 암호로 비교합니다. 따라서 password_hash 함수의 결과를 다시 password_hash 함수에 넣으면, 암호화된 결과가 달라지기 때문에 password_verify 함수가 항상 false를 반환합니다.
password_hash 함수의 결과를 다시 password_hash 함수에 넣지 않고, 원래 암호를 저장하고 password_verify 함수를 사용하면, 암호화된 결과가 원래 암호와 일치하는지 비교할 수 있습니다.
예를 들어, 다음과 같이 코드를 작성할 수 있습니다.
php
$password = "1234";
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
$storedPassword = $hashedPassword;
$compareResult = password_verify($password, $storedPassword);
echo $compareResult; // 항상 true를 반환합니다.
또한, password_hash 함수의 결과를 다시 password_hash 함수에 넣는 경우, password_hash 함수의 결과를 저장하고 password_verify 함수를 사용하는 것보다 더 안전합니다. password_hash 함수의 결과를 다시 password_hash 함수에 넣는 경우, 암호화된 결과가 원래 암호와 일치하는지 비교할 수 있습니다.
예를 들어, 다음과 같이 코드를 작성할 수 있습니다.
php
$password = "1234";
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
$rehashedPassword = password_hash($hashedPassword, PASSWORD_DEFAULT);
$compareResult = password_verify($hashedPassword, $rehashedPassword);
echo $compareResult; // 항상 true를 반환합니다.
따라서, password_hash 함수의 결과를 다시 password_hash 함수에 넣는 경우, password_hash 함수의 결과를 저장하고 password_verify 함수를 사용하는 것보다 더 안전합니다.
2025-04-05 17:42