PHP.mk документација

sodium_crypto_pwhash_str

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.sodium-crypto-pwhash-str.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.sodium-crypto-pwhash-str.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
sodium_crypto_pwhash_str

Референца за `function.sodium-crypto-pwhash-str.php` со подобрена типографија и навигација.

function.sodium-crypto-pwhash-str.php

sodium_crypto_pwhash_str

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_pwhash_strДобијте хеш кодиран во ASCII

= NULL

Користи алгоритми за хеширање кои се тешки за процесорот и меморијата, заедно со случајно генерирана сол, и лимити за меморија и процесор за да се генерира хеш кодиран во ASCII, погоден за складирање лозинки.

Параметри

password
string; Должината на хешот на лозинката што треба да се генерира, во бајти.
opslimit
Претставува максимална количина на пресметки што треба да се извршат. Зголемувањето на овој број ќе предизвика функцијата да бара повеќе циклуси на процесорот за да пресмета клуч. Постојат константи достапни за поставување на лимитот на операциите на соодветни вредности во зависност од наменетата употреба, по редослед на јачина: SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE, SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE and SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE.
memlimit
Претставува максимална количина на пресметки што треба да се извршат. Зголемувањето на овој број ќе предизвика функцијата да бара повеќе циклуси на процесорот за пресметување на клуч. Постојат некои константи достапни за поставување на ограничувањето на операциите на соодветни вредности во зависност од наменетата употреба, по редослед на јачина: SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE, SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATEПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE. Обично овие треба да се спарат со соодветните вредности на opslimit.

Вратени вредности

Враќа хеширана лозинка.

За да се добие истата хеш лозинка од истата лозинка, мора да се користат истите вредности за opslimit and memlimit . Тие се вградени во генерираниот хеш, така што сè што е потребно за проверка на хешот е вклучено. Ова му овозможува на sodium_crypto_pwhash_str_verify() функцијата да го провери хешот без потреба од посебно складирање за другите параметри.

Примери

Пример #1 sodium_crypto_pwhash_str() example

<?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() функцијата, нема параметар за сол (солта се генерира автоматски), а параметрите opslimit and memlimit не се опционални.

Види Исто така

  • sodium_crypto_pwhash_str_verify() Стандардната вредност треба да се менува само во цело издание (7.3.0, 8.0.0, итн.) и не во ревизиско издание. Единствениот исклучок на ова е во случај на итност кога ќе се открие критична безбедносна пропустливост во тековната стандардна вредност.
  • sodium_crypto_pwhash() - Изведи клуч од пасош, користејќи Argon2
  • password_hash() - Создава хеш на лозинка
  • password_verify() Стандардната вредност треба да се менува само во цело издание (7.3.0, 8.0.0, итн.) и не во ревизиско издание. Единствениот исклучок на ова е во случај на итност кога ќе се открие критична безбедносна пропустливост во тековната стандардна вредност.
  • » Libsodium Argon2 docs

Белешки од корисници 1 белешка

clcollie на mindspring точка com
пред 5 години
If you want to ensure that the hashes you generate with sodium_crypto_pwhash_str are compatible with those generated by password_hash, you need to keep an eye on that memory setting. According to the docs, the password_hash memory_cost param is given in "kibibytes", whereas sodium_crypto_pwhash_str uses bytes. I did some experiments to see what the difference is and ran into this:

echo password_hash('password',
                   PASSWORD_ARGON2ID,
                   [
                       'memory_cost' => 15000,
                       'time_cost'   => 26,
                       'threads'     => 1,
                   ];

echo sodium_crypto_pwhash_str(
        'password', 26,
        15000000);

These result in:
$argon2id$v=19$m=15000,t=26,p=1$VG5MSkhUdEdFaGwyVG5sWA$laRHogIVAnC4ggLI8RdCDWlITTdicrdq0tK6SHGf4CI
$argon2id$v=19$m=14648,t=26,p=1$ClQ37/z9u7K6V1C2bkD4QA$51m8KhQQ9gujFSF+JyQR9d5QesayJiKsFmDU4HnGBHg

Notice that the "m=" numbers are different, and also different from what we asked for. It's down to the "kibibytes" unit. If we multiply the 15000 we used for password_hash by 1,024 instead of 1,000, we get 15,360,000, and using that number gives us the expected hash params:

echo sodium_crypto_pwhash_str(
        'password', 26,
        15360000);

$argon2id$v=19$m=15000,t=26,p=1$Qz3pWktOvT6X/LvdAk0bgQ$KosSFPfHUtWg+ppyRs3Op5/zIV6F6iy2Q7Gom8wP29c

This should be compatible with password_hash.

Incidentally the numbers I'm using for the Argon2id hash params are taken from the OWASP password guide, which recommend values different from PHP's default: https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html#argon2id
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.