본문 바로가기

카테고리 없음

password_hash 찍먹하기

회원가입 로그인을 하고 있는 찰나 

회원가입에 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 , 문자열 | int | null $algo , 배열 $options= [] ): 문자열
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 비밀번호 해시() 예제

<?php
/**
* 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