sodium_crypto_pwhash_str
(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_pwash_str — ASCII 인코딩 해시 가져오기
설명
sodium_crypto_pwhash_str(string $password
, int $opslimit
, int $memlimit
): string
임의로 생성된 솔트, 메모리 및 CPU 제한과 함께 CPU 및 메모리 하드 해시 알고리즘을 사용하여 암호 저장에 적합한 ASCII 인코딩 해시를 생성합니다.
매개변수
password
- string; 해시를 생성할 암호입니다.
opslimit
- 수행할 최대 계산량을 나타냅니다. 이 숫자를 높이면 함수가 키를 계산하는 데 더 많은 CPU 주기가 필요합니다.
SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE
,SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE
및SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE
와 같이 의도한 용도에 따라 작업 제한을 적절한 값으로 설정하는 데 사용할 수 있는 상수가 있습니다. memlimit
- 함수가 사용할 최대 RAM 양(바이트)입니다.
SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
,SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE
및SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE
와 같이 적절한 값을 선택하는 데 도움이 되는 상수가 있습니다. 일반적으로 이들은 일치하는 oplimit 값과 쌍을 이루어야 합니다.
반환 값
해시된 암호를 반환합니다.
동일한 비밀번호에서 동일한 비밀번호 해시를 생성하려면 opslimit
및 memlimit
에 동일한 값을 사용해야 합니다. 이들은 생성된 해시 내에 포함되므로 해시를 확인하는 데 필요한 모든 것이 포함됩니다. 이를 통해 sodium_crypto_pwash_str_verify() 함수는 다른 매개변수를 별도로 저장할 필요 없이 해시를 확인할 수 있습니다.
Examples
예제 #1 sodium_crypto_pwash_str() 예제
<?php
$password = 'password';
echo sodium_crypto_pwhash_str(
$password,
SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
);
위의 예는 다음과 유사한 결과를 출력합니다.
$argon2id$v=19$m=65536,t=2,p=1$oWIfdaXwWwhVmovOBc2NAQ$EbsZ+JnZyyavkafS0hoc4HdaOB0ILWZESAZ7kVGa+Iw
노트
메모: 해시는 Argon2ID 알고리즘을 사용하여 계산되어 GPU 및 부채널 공격에 대한 저항을 제공합니다. password_hash() 함수와 달리 salt 매개변수가 없고(솔트는 자동으로 생성됨) opslimit
및 memlimit
매개변수는 선택 사항이 아닙니다.
기타
- sodium_crypto_pwhash_str_verify() - 비밀번호가 해시와 일치하는지 확인
- sodium_crypto_pwhash() - Argon2를 사용하여 암호에서 키 파생
- password_hash() - 비밀번호 해시 생성
- password_verify() - 비밀번호가 해시와 일치하는지 확인
- » Libsodium Argon2 docs