회원가입 로그인을 하고 있는 찰나
회원가입에 password_hash을 넣어 db에 넣는것은 잘 되어 있는 것을 확인 했다
이제 password_verify을 사용해 로그인을 하면 된다고 했지만
나는 되지 않았다 왜 안 되느느지 몰랐다
되면 그냥 넘어갈려고 했지만 잘 되지 않았기에
공부하고 넘어가려 한다
공식 홈페이지를 통해 공부한다
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
나는 이런 식으로 사용 했다
위의 예는 다음과 유사한 내용을 출력합니다.
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
물론 서버와 연동하여 사용자가 회원가입을 할 때 적용되는 것
대강 이렇게 하면 되는구나를 알게 되었다
password_hash은 쉽다.... 암호화하는 것은 쉬웠지만
password_verify로 복호화하는 것은 나에게 어려웠다 password_verify을 찍먹하러 가보자
https://code-onetool.tistory.com/72
password_verify
https://www.php.net/manual/en/function.password-verify.php PHP: password_verify - Manual This is a simplified example; it is recommended to rehash a correct password if necessary; see password_needs_rehash() for an example. The above example will output: w
code-onetool.tistory.com
$userPassword = $_POST["userPassword"]; //4
$hashedPassword = password_hash($userPassword, PASSWORD_DEFAULT);
https://www.php.net/manual/en/function.password-hash.php
PHP: password_hash - Manual
Since 2017, NIST recommends using a secret input when hashing memorized secrets such as passwords. By mixing in a secret input (commonly called a "pepper"), one prevents an attacker from brute-forcing the password hashes altogether, even if they have the h
www.php.net
password_hash
(PHP 5 >= 5.5.0, PHP 7, PHP 8) 여기서만 되나 보다
password_hash — 비밀번호 해시를 생성합니다.
설명 ¶
password_hash(string $password, string|int|null $algo, array $options = []): string
Password_hash()는 강력한 단방향 해싱 알고리즘을 사용하여 새 비밀번호 해시를 생성한다
현재 지원되는 알고리즘은 다음과 같다
PASSWORD_DEFAULT , PASSWORD_BCRYPT
PASSWORD_DEFAULT - bcrypt 알고리즘을 사용
시간이 지남에 따라 변경되도록 설계
따라서 이 식별자를 사용한 결과의 길이는 시간이 지남에 따라 변경
60자를 초과하여 확장할 수 있는 데이터베이스 열에 결과를 저장하는 것이 좋다 (255자가 적합함).
PASSWORD_BCRYPT - CRYPT_BLOWFISH알고리즘을 사용하여 해시를 생성
그러면 "$2y$" 식별자를 사용하여 표준 crypt() 호환 해시가 생성됩니다 . 결과는 항상 60자 문자열이거나 false실패
PASSWORD_ARGON2I - Argon2i 해싱 알고리즘을 사용하여 해시를 생성
알고리즘은 PHP가 Argon2 지원으로 컴파일된 경우에만 사용할 수 있다
PASSWORD_ARGON2ID - Argon2id 해싱 알고리즘을 사용하여 해시를 생성
이 알고리즘은 PHP가 Argon2 지원으로 컴파일된 경우에만 사용할 수 있다
매개변수 ¶
password_hash(string $password, string|int|null $algo, array $options = []): string
password
사용자의 비밀번호입니다.
PASSWORD_BCRYPT알고리즘을 사용하면 password매개변수가 최대 길이 72바이트로 잘립니다.
algo
비밀번호를 해싱할 때 사용할 알고리즘을 나타내는 비밀번호 알고리즘 상수 입니다.
options
옵션이 포함된 연관 배열입니다. 각 알고리즘에 대해 지원되는 옵션에 대한 문서는 비밀번호 알고리즘 상수를 참조하세요 .
생략할 경우 랜덤 솔트가 생성되며 기본 비용이 사용됩니다.
반환값 ¶
해시된 비밀번호를 반환합니다.
사용된 알고리즘, 비용 및 소금은 해시의 일부로 반환됩니다.
따라서 해시를 확인하는 데 필요한 모든 정보가 여기에 포함됩니다.
이를 통해 패스워드_verify() 함수는 솔트 또는 알고리즘 정보를 위한 별도의 저장 공간 없이 해시를 확인할 수 있습니다.
예제 #1 비밀번호 해시() 예제
/**
* We just want to hash our password using the current DEFAULT algorithm.
* This is presently BCRYPT, and will produce a 60 character result.
*
* Beware that DEFAULT may change over time, so you would want to prepare
* By allowing your storage to expand past 60 characters (255 would be good)
*/
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
?>
위의 예는 다음과 유사한 내용을 출력합니다.
$2년$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a