sodium_crypto_pwhash

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_pwash — Argon2를 사용하여 암호에서 키 파생


설명

sodium_crypto_pwhash(
    int $length,
    string $password,
    string $salt,
    int $opslimit,
    int $memlimit,
    int $algo = SODIUM_CRYPTO_PWHASH_ALG_DEFAULT
): string
                

이 함수는 libsodium의 crypto_pwash 키 파생 함수에 대한 낮은 수준의 액세스를 제공합니다. 이 함수를 사용해야 하는 특별한 이유가 없는 한 sodium_crypto_pwash_str() 또는 password_hash() 함수를 대신 사용해야 합니다.

이 특정 함수를 사용하는 일반적인 이유는 암호와 솔트에서 암호화 키의 시드를 파생한 다음 이 시드를 사용하여 특정 목적에 필요한 실제 키를 생성하는 것입니다(예: sodium_crypto_sign_detached()).


매개변수

length
int; 생성할 비밀번호 해시의 길이(바이트)입니다.
password
string; 해시를 생성할 암호입니다.
salt
해싱 전에 비밀번호에 추가할 솔트. 솔트는 예측 불가능해야 하며, random_bytes()와 같은 좋은 난수 소스에서 이상적으로 생성되어야 하며 길이는 최소 SODIUM_CRYPTO_PWHASH_SALTBYTES바이트여야 합니다.
opslimit
수행할 최대 계산량을 나타냅니다. 이 숫자를 높이면 함수가 키를 계산하는 데 더 많은 CPU 주기가 필요합니다. 작업 제한을 강도 순서대로 SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE, SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATESODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE와 같이 의도한 용도에 따라 적절한 값으로 설정하는 데 사용할 수 있는 몇 가지 상수가 있습니다.
memlimit
함수가 사용할 최대 RAM 양(바이트)입니다. SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE, SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATESODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE와 같이 적절한 값을 선택하는 데 도움이 되는 상수가 있습니다. 일반적으로 이들은 일치하는 opslimit 값과 쌍을 이루어야 합니다.
algo
int 사용할 해시 알고리즘을 나타내는 숫자입니다. 기본적으로 SODIUM_CRYPTO_PWHASH_ALG_DEFAULT(현재 권장되는 알고리즘, libsodium의 한 버전에서 다른 버전으로 변경될 수 있음) 또는 명시적으로 SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13을 사용하여 Argon2id 알고리즘 버전 1.3을 나타냅니다.

반환 값

파생된 키를 반환합니다. 반환 값은 ASCII로 인코딩된 표현이 아닌 해시의 이진 문자열이며 해시를 생성하는 데 사용된 매개변수에 대한 추가 정보를 포함하지 않으므로 암호를 확인하려는 경우 해당 정보를 보관해야 합니다. 앞으로는. 이 모든 작업을 수행할 필요가 없도록 하려면 sodium_crypto_pwash_str()을 사용하세요.


Examples

예제 #1 sodium_crypto_pwhash() 예제

                  
<?php
//Need to keep the salt if we're ever going to be able to check this password
$salt = random_bytes(SODIUM_CRYPTO_PWHASH_SALTBYTES);
//Using bin2hex to keep output readable
echo bin2hex(
    sodium_crypto_pwhash(
        16, // == 128 bits
        'password',
        $salt,
        SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
        SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE,
        SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13
    )
);
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

a18f346ba57992eb7e4ae6abf3fd30ee