패스워드 기반 키생성함수 hash_pbkdf2()

사용자가 입력하는 패스워드, 솔트, 반복수 등의 정보를 기반으로 해쉬함수를 이용하여 난수처럼 보이는 암호키를 생성하는 함수. 이렇게 생성된 암호키를 대칭키암호 등에 사용함
http://php.net/manual/kr/function.hash-pbkdf2.php
hash_pbkdf2() 함수는 php 5.5 이상 버전에서만 작동함.
사용 형식: string hash_pbkdf2($algorithm, $password, $salt, $iterations)
$salt를 직접 생성하여 입력함

사용자 입력 패스워드: password 패스워드
salt값: salt 솔트
반복횟수: 10
hash_pbkdf2(md5) 계산값: a2818df87a2b78f6729867fbb7d94b09
hash_pbkdf2(sha1) 계산값: 4fa51637580e0ff6db31bfee8b512ec79f4158e8
hash_pbkdf2(sha256) 계산값: 697667852b386f5b75aa133e34e82a57cb96c4471fd0aafad62284e89dd7dd8c
hash_pbkdf2(sha512) 계산값: 8cf63a3a3e249c4bfaa211300830b70a0b4a6a4dec026988e09130a12ad37b214b9bd3a3afb606ab3a89635fed6609d95f20e51a6d71538e8b649c403cc9b66f

패스워드해쉬 생성 및 검증 함수 password_hash()

사용자 입력 패스워드로부터 해쉬값을 생성하여 패스워드 파일에 저장. 로그인 시도시 사용자 입력 패스워드와 비교하여 인증
http://php.net/manual/kr/function.password-hash.php
password_hash() 함수는 php 5.5 이상 버전에서만 작동함.
계산 형식: string password_hash(string $password, integer $algo [, array $options ] )
salt를 자동 생성하여 적용
검증 형식: bool password_verify($password, $hash)
$hash = password_hash($password, PASSWORD_BCRYPT);
$result = password_verify($password, $hash);
password_hash() uses a strong hash, generates a strong salt, and applies proper rounds automatically. password_hash() is a simple crypt() wrapper and compatible with existing password hashes. Use of password_hash() is encouraged.

사용자 입력 패스워드: password 패스워드
password_hash() 계산값 : $2y$10$GIVW9J.4wRiuUhNuzQP9JO9y2wQnTXvderTF8F8Q7.UB3qxcMX51W
password_verify() 검증 : 1

패스워드 단방향 문자열 암호화 함수 crypt()

crypt()는 표준 유닉스 DES 기반 암호화 알고리즘이나 시스템에서 사용할 수 있는 다양한 알고리즘을 사용하여 암호화한 문자열을 반환. 사용자 패스워드를 암호화하여 패스워드 파일에 저장하고 로그인 시도시 사용자 입력과 비교하여 인증
http://php.net/manual/kr/function.crypt.php
string crypt ( string $str [, string $salt ] )
$salt를 입력하지 않으면 자동 생성하여 적용
패스워드 생성: $password = crypt('mypassword'); // salt 자동 생성
패스워드 검증: crypt($user_input, $password) == $password)

사용자 입력 패스워드: mypassword
생성된 패스워드: $1$3ctxCwSc$6w5RS2Tv0lEY7Q0jRg5Dm/
패스워드 확인! 인증 완료.