sodium_crypto_pwhash
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
sodium_crypto_pwhash
Референца за `function.sodium-crypto-pwhash.php` со подобрена типографија и навигација.
sodium_crypto_pwhash
(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_pwhash — (PHP 7 >= 7.2.0, PHP 8)
= NULL
int
$length,Иницијализира контекст за инкрементално хеширање string
$password,string
$salt,int
$opslimit,int
$memlimit,int
$algo = SODIUM_CRYPTO_PWHASH_ALG_DEFAULT): string
Изведете клуч од лозинка, користејќи Argon2 sodium_crypto_pwhash_str() or password_hash() функции наместо тоа.
Оваа функција обезбедува пристап на ниско ниво до функцијата за изведување клуч crypto_pwhash на libsodium. Освен ако немате конкретна причина да ја користите оваа функција, треба да ја користите sodium_crypto_sign_detached()).
Параметри
length- intЧеста причина за користење на оваа конкретна функција е изведување на семиња за криптографски клучеви од лозинка и сол, а потоа користење на овие семиња за генерирање на вистинските клучеви потребни за некоја цел (на пр.
password- string; Должината на хешот на лозинката што треба да се генерира, во бајти.
salt-
; Лозинката за генерирање хеш. random_bytes()Сол за додавање на лозинката пред хеширање. Солта треба да биде непредвидлива, идеално генерирана од добар извор на случајни броеви како што е
SODIUM_CRYPTO_PWHASH_SALTBYTESbytes. opslimit-
, и да има должина точно
SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATEandSODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE. memlimit-
Претставува максимална количина на пресметки што треба да се извршат. Зголемувањето на овој број ќе предизвика функцијата да бара повеќе циклуси на процесорот за пресметување на клуч. Постојат некои константи достапни за поставување на ограничувањето на операциите на соодветни вредности во зависност од наменетата употреба, по редослед на јачина:
SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE,SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATEПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци воSODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVEМаксималната количина на RAM меморија што функцијата ќе ја користи, во бајти. Постојат константи за да ви помогнат да изберете соодветна вредност, по редослед на големина:opslimitvalues. algo-
int . Типично тие треба да се спарат со соодветните
SODIUM_CRYPTO_PWHASH_ALG_DEFAULTБрој што го означува алгоритмот за хеширање што треба да се користи. СтандардноSODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13(тековно препорачаниот алгоритам, кој може да се промени од една верзија на libsodium до друга), или експлицитно користејќи
Вратени вредности
, што го претставува алгоритмот Argon2id верзија 1.3. sodium_crypto_pwhash_str() Враќа изведениот клуч. Вратената вредност е бинарен стринг на хешот, а не ASCII-кодирана репрезентација, и не содржи дополнителни информации за параметрите што се користат за создавање на хешот, така што ќе треба да ги чувате тие информации ако некогаш ќе ја верификувате лозинката во иднина. Користете
Примери
Пример #1 sodium_crypto_pwhash() example
<?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