簡體   English   中英

如何使用 PHP 從 web 注冊新帳戶來制作鹽 hash?

[英]How-to make salt hash using PHP to register new account from web?

刪除sha_pass_hash字段后,用於驗證 AzerothCore 帳戶(制作鹽和驗證者)的 PHP 算法是什么?

在我們使用之前:

$sha_pass_hash = getPasswordHash($account_name, $password);

它現在如何運作? 如何制作salt和verifier注冊新賬號?

任何人都可以通過示例提供一些詳細說明嗎?

我剛剛為 acore-cms 做了https://github.com/azerothcore/acore-cms/pull/20/files

我什至發布了快速查看使用鹽計算密碼的代碼:

function CalculateSRP6Verifier($username, $password, $salt)
{
    // algorithm constants
    $g = gmp_init(7);
    $N = gmp_init('894B645E89E1535BBDAD5B8B290650530801B18EBFBF5E8FAB3C82872A3E9BB7', 16);

    // calculate first hash
    $h1 = sha1(strtoupper($username . ':' . $password), TRUE);

    // calculate second hash
    $h2 = sha1($salt.$h1, TRUE);

    // convert to integer (little-endian)
    $h2 = gmp_import($h2, 1, GMP_LSW_FIRST);

    // g^h2 mod N
    $verifier = gmp_powm($g, $h2, $N);

    // convert back to a byte array (little-endian)
    $verifier = gmp_export($verifier, 1, GMP_LSW_FIRST);

    // pad to 32 bytes, remember that zeros go on the end in little-endian!
    $verifier = str_pad($verifier, 32, chr(0), STR_PAD_RIGHT);

    return $verifier;
}

記得安裝php-gmp庫。

如果您需要創建一個帳戶,您可以使用它來生成鹽:

// generate a random salt
$salt = random_bytes(32);

這些代碼受到 MasterKing32 CMS 的強烈啟發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM