라이브러리

[PHP] sodium_crypto_pwhash - Argon2를 사용하여 비밀번호에서 키 파생




PHP에서 Sodium Crypto Pwhash 사용하기

PHP 7.2 버전부터 sodium_crypto_pwhash 함수가 제공되며, 이 함수는 비밀번호 해시를 생성하는 데 사용됩니다. 이 함수는 Argon2 알고리즘을 기반으로 하며, 비밀번호를 안전하게 저장하고 비교하는 데 사용됩니다.

Argon2 알고리즘

Argon2 알고리즘은 비밀번호 해시를 생성하는 데 사용되는 알고리즘입니다. 이 알고리즘은 비밀번호를 안전하게 저장하고 비교하는 데 사용됩니다. Argon2 알고리즘은 3 가지 버전이 있습니다. PHP는 Argon2id 버전을 사용합니다.

Sodium Crypto Pwhash 함수

Sodium Crypto Pwhash 함수는 비밀번호 해시를 생성하는 데 사용됩니다. 이 함수는 다음과 같은 매개변수를 사용합니다.

- `password`: 비밀번호를 입력하는 변수입니다.
- `salt`: 비밀번호에 사용되는 salt 값을 입력하는 변수입니다. 이 변수는 null로 설정할 수 있습니다. 이 경우, 랜덤한 salt 값이 생성됩니다.
- `opslimit`: 비밀번호 해시를 생성하는 데 사용되는 연산 횟수를 입력하는 변수입니다. 이 변수는 1 이상의 정수여야 합니다.
- `memlimit`: 비밀번호 해시를 생성하는 데 사용되는 메모리 크기를 입력하는 변수입니다. 이 변수는 1 이상의 정수여야 합니다.
- `algorithm`: 사용되는 알고리즘을 입력하는 변수입니다. 이 변수는 'argon2id'로 설정해야 합니다.

예제

다음 예제는 sodium_crypto_pwhash 함수를 사용하여 비밀번호 해시를 생성하는 방법을 보여줍니다.

#hostingforum.kr
php

<?php



// 비밀번호를 입력합니다.

$password = 'mysecretpassword';



// salt 값을 생성합니다.

$salt = random_bytes(16);



// opslimit 값을 설정합니다.

$opslimit = 2;



// memlimit 값을 설정합니다.

$memlimit = 1024 * 1024; // 1MB



// algorithm 값을 설정합니다.

$algorithm = 'argon2id';



// sodium_crypto_pwhash 함수를 사용하여 비밀번호 해시를 생성합니다.

$hash = sodium_crypto_pwhash($password, $salt, $opslimit, $memlimit, $algorithm);



// 비밀번호 해시를 저장합니다.

file_put_contents('password.hash', $hash);



// 비밀번호 해시를 비교하는 예제입니다.

$password2 = 'mysecretpassword';

$hash2 = file_get_contents('password.hash');

if (sodium_crypto_pwhash_verify($password2, $hash2, $salt, $opslimit, $memlimit, $algorithm)) {

    echo '비밀번호가 일치합니다.';

} else {

    echo '비밀번호가 일치하지 않습니다.';

}



?>



이 예제는 sodium_crypto_pwhash 함수를 사용하여 비밀번호 해시를 생성하고, 비밀번호 해시를 비교하는 방법을 보여줍니다. 비밀번호 해시를 생성하는 데 사용되는 salt 값, opslimit 값, memlimit 값, algorithm 값을 설정할 수 있습니다.

참고

- sodium_crypto_pwhash 함수는 PHP 7.2 버전부터 제공됩니다.
- sodium_crypto_pwhash 함수는 Argon2 알고리즘을 기반으로 하며, 비밀번호를 안전하게 저장하고 비교하는 데 사용됩니다.
- sodium_crypto_pwhash 함수는 salt 값을 생성할 수 있습니다. 이 경우, 랜덤한 salt 값이 생성됩니다.
- sodium_crypto_pwhash 함수는 opslimit 값을 설정할 수 있습니다. 이 경우, 비밀번호 해시를 생성하는 데 사용되는 연산 횟수가 설정됩니다.
- sodium_crypto_pwhash 함수는 memlimit 값을 설정할 수 있습니다. 이 경우, 비밀번호 해시를 생성하는 데 사용되는 메모리 크기가 설정됩니다.
- sodium_crypto_pwhash 함수는 algorithm 값을 설정할 수 있습니다. 이 경우, 사용되는 알고리즘을 설정됩니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 8,985건 / 175 페이지

검색

게시물 검색