<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >[info] ## php官方推薦加密方法: * password_get_info — Returns information about the given hash * password_hash — Creates a password hash * password_needs_rehash — Checks if the given hash matches the given options * password_verify — Verifies that a password matches a hash >[success]## 加密算法 password\_hash?—?創建密碼的散列(hash)??(PHP 5 >= 5.5.0, PHP 7,PHP8) >[success]>當前支持的算法: * **`PASSWORD_DEFAULT`**?- 使用 bcrypt 算法 (PHP 5.5.0 默認)。 注意,該常量會隨著 PHP 加入更新更高強度的算法而改變。 所以,使用此常量生成結果的長度將在未來有變化。 因此,數據庫里儲存結果的列可超過60個字符(最好是255個字符)。 * **`PASSWORD_BCRYPT`**?- 使用?**`CRYPT_BLOWFISH`**?算法創建散列。 這會產生兼容使用 "$2y$" 的?[crypt()](http://php.net/manual/zh/function.crypt.php)。 結果將會是 60 個字符的字符串, 或者在失敗時返回?**`FALSE`**。 * **`PASSWORD_ARGON2I`**?- 使用 Argon2 散列算法創建散列。 *** **`PASSWORD_BCRYPT`**?支持的選項: * *salt*([string](http://php.net/manual/zh/language.types.string.php)) - 手動提供散列密碼的鹽值(salt)。這將避免自動生成鹽值(salt)。 省略此值后,**password\_hash()**?會為每個密碼散列自動生成隨機的鹽值。這種操作是有意的模式。 **Warning** 鹽值(salt)選項從 PHP 7.0.0 開始被廢棄(deprecated)了。 現在最好選擇簡單的使用默認產生的鹽值。 * *cost*?([integer](http://php.net/manual/zh/language.types.integer.php)) - 代表算法使用的 cost。[crypt()](http://php.net/manual/zh/function.crypt.php)?頁面上有 cost 值的例子。 省略時,默認值是?*10*。 這個 cost 是個不錯的底線,但也許可以根據自己硬件的情況,加大這個值。 **`PASSWORD_ARGON2I`**?支持的選項: * *memory\_cost*?([integer](http://php.net/manual/zh/language.types.integer.php)) - 計算 Argon2 散列時的最大內存(單位:字節 byte)。默認值:?**`PASSWORD_ARGON2_DEFAULT_MEMORY_COST`**。 * *time\_cost*?([integer](http://php.net/manual/zh/language.types.integer.php)) - 計算 Argon2 散列時最多的時間。默認值:?**`PASSWORD_ARGON2_DEFAULT_TIME_COST`**。 * *threads*?([integer](http://php.net/manual/zh/language.types.integer.php)) - 計算 Argon2 散列時最多的線程數。默認值:?**`PASSWORD_ARGON2_DEFAULT_THREADS`**。 *** >[success]### 默認鹽值例子: ``` <?php ?\\?我們想要使用默認算法散列密碼 ??\\??當前是?BCRYPT,并會產生?60?個字符的結果。 ??\\? ??\\??請注意,隨時間推移,默認算法可能會有變化, ??\\?所以需要儲存的空間能夠超過?60?字(255字不錯) ??\\? echo?password_hash("rasmuslerdorf",?PASSWORD\_DEFAULT); ?> ``` ~~~html $2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a ~~~ >[success]### 手動設置鹽值的例子: ``` <?php \\ ?\\?注意,這里的鹽值是隨機產生的。 ?\\?永遠都不要使用固定鹽值,或者不是隨機生成的鹽值。 ?\\ \\?絕大多數情況下,可以讓?password_hash?generate?為你自動產生隨機鹽值 \\ $options?=?[ ????'cost'?=>?11, ????'salt'?=>?mcrypt_create_iv(22,?MCRYPT_DEV_URANDOM), ]; echo?password_hash("rasmuslerdorf",?PASSWORD_BCRYPT,?$options); ?> ``` ~~~html $2y$11$q5MkhSBtlsJcNEVsYh64a.aCluzHnGog7TQAKVmQwO9C8xb.t89F ~~~ >[success] ## 解密算法: password\_verify?—?驗證密碼是否和散列值匹配??(PHP 5 >= 5.5.0, PHP 7)? ### 說明 **password\_verify**?(?string?`$password`?,?string?`$hash`?) :?bool 驗證密碼是否和指定的散列值匹配。 注意?[password\_hash()](http://php.net/manual/zh/function.password-hash.php)?返回的散列包含了算法、 cost 和鹽值。 因此,所有需要的信息都包含內。使得驗證函數不需要儲存額外鹽值等信息即可驗證哈希。 時序攻擊(timing attacks)對此函數不起作用。 ### 參數 `password` 用戶的密碼。 `hash` 一個由?[password\_hash()](http://php.net/manual/zh/function.password-hash.php)?創建的散列值。 ### 返回值 如果密碼和散列值匹配則返回?**`TRUE`**,否則返回?**`FALSE`**?。 ### 范例 **Example #1?**password\_verify()**?例子** ```<?php //?想知道以下字符從哪里來,可參見?password_hash()?的例子 $hash?=?'$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; if?(password_verify('rasmuslerdorf',?$hash))?{ ????echo?'Password?is?valid!'; //解密成功 }?else?{ ????echo?'Invalid?password.'; //解密失敗 } ?>``` 以上例程會輸出: ~~~html Password is valid! ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看