라이브러리
[PHP] sodium_crypto_pwhash_scryptsalsa208sha256_str_verify - 비밀번호가 유효한 비밀번호 검증 문자열인지 확인합니다.
비밀번호 해시 함수: sodium_crypto_pwhash_scryptsalsa208sha256
PHP의 `sodium_crypto_pwhash_scryptsalsa208sha256` 함수는 비밀번호를 해시화하는 데 사용되는 함수입니다. 이 함수는 Scrypt 알고리즘을 사용하여 비밀번호를 해시화하고, 해시된 비밀번호를 저장합니다. 이 함수는 비밀번호를 안전하게 저장하고, 해킹 공격을 방지하기 위해 사용됩니다.
sodium_crypto_pwhash_scryptsalsa208sha256_str_verify
`sodium_crypto_pwhash_scryptsalsa208sha256_str_verify` 함수는 비밀번호를 해시화한 후, 저장된 해시된 비밀번호와 비교하는 데 사용되는 함수입니다. 이 함수는 입력된 비밀번호가 저장된 해시된 비밀번호와 일치하는지 여부를 확인합니다.
사용 예제
#hostingforum.kr
php
<?php
// 비밀번호를 해시화하는 함수
function hashPassword($password) {
$salt = random_bytes(16);
$hashedPassword = sodium_crypto_pwhash_scryptsalsa208sha256(
$password,
$salt,
4096,
8,
1,
32
);
return sodium_bin2hex($salt) . ':' . sodium_bin2hex($hashedPassword);
}
// 비밀번호를 저장하는 함수
function savePassword($username, $password) {
$hashedPassword = hashPassword($password);
// 비밀번호를 데이터베이스에 저장합니다.
// 예를 들어, MySQL 데이터베이스에 저장하는 경우:
// $conn = new mysqli("localhost", "username", "password", "database");
// $conn->query("INSERT INTO users (username, password) VALUES ('$username', '$hashedPassword')");
}
// 비밀번호를 확인하는 함수
function verifyPassword($username, $password) {
// 데이터베이스에서 저장된 비밀번호를 가져옵니다.
// 예를 들어, MySQL 데이터베이스에서 가져오는 경우:
// $conn = new mysqli("localhost", "username", "password", "database");
// $result = $conn->query("SELECT password FROM users WHERE username = '$username'");
// $hashedPassword = $result->fetch_assoc()['password'];
$hashedPassword = 'salt:' . 'hashed_password'; // 예시용 데이터
// 저장된 해시된 비밀번호를 가져옵니다.
$salt = substr($hashedPassword, 0, 32);
$hashedPassword = substr($hashedPassword, 33);
// 입력된 비밀번호를 해시화합니다.
$inputHashedPassword = sodium_crypto_pwhash_scryptsalsa208sha256(
$password,
sodium_hex2bin($salt),
4096,
8,
1,
32
);
// 입력된 비밀번호가 저장된 해시된 비밀번호와 일치하는지 여부를 확인합니다.
return sodium_crypto_pwhash_scryptsalsa208sha256_str_verify($inputHashedPassword, sodium_hex2bin($hashedPassword));
}
// 예시용 데이터
$username = 'example';
$password = 'example';
// 비밀번호를 저장합니다.
savePassword($username, $password);
// 비밀번호를 확인합니다.
if (verifyPassword($username, $password)) {
echo '비밀번호가 일치합니다.';
} else {
echo '비밀번호가 일치하지 않습니다.';
}
이 예제에서는 `sodium_crypto_pwhash_scryptsalsa208sha256` 함수를 사용하여 비밀번호를 해시화하고, `sodium_crypto_pwhash_scryptsalsa208sha256_str_verify` 함수를 사용하여 입력된 비밀번호가 저장된 해시된 비밀번호와 일치하는지 여부를 확인합니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.