임의의 길이를 갖는 데이터를 고정된 길이의 데이터로 변환시켜주는 함수이다. 이런 함수를 통해 얻어지는 값을 해시값 또는 해시코드라고 한다.
일방향 데이터로써 데이터를 바꾸면 복구가 되지않는다. 즉, 평문을 알 수 없다. 이러한 특징으로 보안을 위해 사용된다.
해시값의 비교를 통해 위변조및 무결성을 검증하는데 사용한다.
password_hash 사용법
hash함수는 password_hash (암호화할 문자열, 알고리즘,(옵션))으로 구성되어 있다.
입력한 값이 암호화된 비밀번호와 맞는지 확인하는 것은 password_verify 함수를 사용한다.
ex)password_hash
<?php $password=1234; $hash_PW=password_hash($password, PASSWORD_DEFAULT); echo "password = ".$password."<br/>"; echo "hash처리된 password = ".$hash_PW; ?>결과
password_verify(비교할 문자열(사용자가 입력), hash처리된 문자열)를 사용한다.
사용자가 로그인하기위해 입력한 값과 암호화된 값이 같으면 True 다르면 False값을 보낸다.
ex) password_verify
<?php $password=1234; $hash_PW=password_hash($password, PASSWORD_DEFAULT); $userInput=5678; $result=password_verify($password,$hash_PW); $result2=password_verify($userInput,$hash_PW); if($result){ echo "result = Success<br/>"; }else{ echo "result = Fail<br/>"; } if($result2){ echo "result2 = Success<br/>"; }else{ echo "result2 = Fail<br/>"; } ?>결과
문자열에서 MD5해시값을 생성해주는 함수이다.
그러나 문자열이 같다면 같은 해시값으로 저장하기 때문에
비밀번호를 암호화 하여 저장하는 것에는 어울리지않는다.
md5(암호화할 문자열,[raw_output])
raw_output은 TRUE면 16바이너리 FALSE면 32바이너리로 변환합니다.
기본값은 FALSE
ex)
<p>md5('apple'): <?=md5('apple');?> </p>결과
스터디 3주차 1일 2024/05/02