選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

PHP 教程

PHP HOME PHP 簡介 PHP 安裝 PHP 語法 PHP 註釋 PHP 變數 PHP Echo / Print PHP 資料型別 PHP 字串 PHP 數字 PHP 型別轉換 PHP 數學 PHP 常量 PHP 魔術常量 PHP 運算子 PHP If...Else...Elseif PHP Switch PHP 迴圈 PHP 函式 PHP 陣列 PHP 超全域性變數 PHP 正則表示式

PHP 表單

PHP 表單處理 PHP 表單驗證 PHP 表單必填項 PHP 表單 URL/電子郵件 PHP 表單完成

PHP 高階

PHP 日期和時間 PHP Include PHP 檔案處理 PHP 檔案開啟/讀取 PHP 檔案建立/寫入 PHP 檔案上傳 PHP Cookies PHP Sessions PHP 過濾器 PHP 高階過濾器 PHP 回撥函式 PHP JSON PHP 異常

PHP OOP

PHP 什麼是 OOP PHP 類/物件 PHP 建構函式 PHP 解構函式 PHP 訪問修飾符 PHP 繼承 PHP 常量 PHP 抽象類 PHP 介面 PHP Trait PHP 靜態方法 PHP 靜態屬性 PHP 名稱空間 PHP 可迭代物件

MySQL 資料庫

MySQL 資料庫 MySQL 連線 MySQL 建立資料庫 MySQL 建立表 MySQL 插入資料 MySQL 獲取最後 ID MySQL 插入多條資料 MySQL 預處理 MySQL 查詢資料 MySQL Where MySQL Order By MySQL 刪除資料 MySQL 更新資料 MySQL 限制資料

PHP XML

PHP XML 解析器 PHP SimpleXML 解析器 PHP SimpleXML - 獲取 PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX 簡介 AJAX PHP AJAX 資料庫 AJAX XML AJAX 即時搜尋 AJAX 投票

PHP 示例

PHP 示例 PHP 編譯器 PHP 測驗 PHP 練習 PHP 伺服器 PHP 證書

PHP 參考手冊

PHP 概述 PHP 陣列 PHP 日曆 PHP 日期 PHP 目錄 PHP 錯誤 PHP 異常 PHP 檔案系統 PHP 過濾器 PHP FTP PHP JSON PHP 關鍵詞 PHP Libxml PHP 郵件 PHP 數學 PHP 雜項 PHP MySQLi PHP 網路 PHP 輸出控制 PHP 正則表示式 PHP SimpleXML PHP Stream PHP String PHP 變數處理 PHP XML 解析器 PHP 壓縮 PHP 時區

PHP crypt() 函式


❮ PHP 字串參考

定義和用法

crypt() 函式使用 DES、Blowfish 或 MD5 演算法返回一個雜湊字串。

此函式在不同作業系統上的行為不同。PHP 在安裝時會檢查可用演算法以及要使用的演算法。

salt 引數是可選的。但是,沒有 salt 的 crypt() 會建立弱密碼。為獲得更好的安全性,請務必指定足夠強的 salt。

有一些常量與 crypt() 函式一起使用。這些常量的值由 PHP 在安裝時設定。

常量

  • [CRYPT_STD_DES] - 標準 DES 雜湊,具有兩個字元的 salt,來自字母表 "./0-9A-Za-z"。在 salt 中使用無效字元將導致此函式失敗。
  • [CRYPT_EXT_DES] - 擴充套件 DES 雜湊,具有九個字元的 salt,由下劃線後跟 4 位元組的迭代計數和 4 位元組的 salt 組成。這些被編碼為可列印字元,每個字元 6 位,先是最低有效字元。值 0 到 63 編碼為 "./0-9A-Za-z"。在 salt 中使用無效字元將導致函式失敗。
  • [CRYPT_MD5] - MD5 雜湊,具有一個以 $1$ 開頭的 12 位 salt
  • [CRYPT_BLOWFISH] - Blowfish 雜湊,salt 以 $2a$、 $2x$ 或 $2y$ 開頭,一個兩位數的成本引數 "$",以及來自字母表 "./0-9A-Za-z" 的 22 個字元。使用字母表之外的字元將導致此函式返回零長度字串。 "$" 引數是底層 Blowfish 雜湊演算法的迭代次數的基數為 2 的對數,必須在 04-31 的範圍內。超出此範圍的值將導致函式失敗。
  • [CRYPT_SHA_256] - SHA-256 雜湊,具有一個以 $5$ 開頭的 16 位 salt。如果 salt 字串以 "rounds=<N>$" 開頭,則 N 的數值用於指示雜湊迴圈應執行多少次,這與 Blowfish 的成本引數非常相似。預設輪數為 5000,最小值為 1000,最大值為 999,999,999。任何超出此範圍的 N 選擇都將被截斷到最近的限制。
  • [CRYPT_SHA_512] - SHA-512 雜湊,具有一個以 $6$ 開頭的 16 位 salt。如果 salt 字串以 "rounds=<N>$" 開頭,則 N 的數值用於指示雜湊迴圈應執行多少次,這與 Blowfish 的成本引數非常相似。預設輪數為 5000,最小值為 1000,最大值為 999,999,999。任何超出此範圍的 N 選擇都將被截斷到最近的限制。

在支援多種演算法的系統上,如果支援,上述常量將設定為 "1",否則設定為 "0"。

注意:沒有解密函式。crypt() 函式使用單向演算法。


語法

crypt(str,salt)

引數值

引數 描述
str 必需。指定要雜湊的字串
salt 可選。用於雜湊的 salt 字串


技術詳情

返回值 返回編碼後的字串,或者返回一個長度小於 13 個字元的字串,並且在失敗時保證與 salt 不同
PHP 版本 4+
更新日誌 PHP 5.6.0 - 如果省略 salt,則顯示 E_NOTICE 安全警告。
PHP 5.3.7 - 添加了 $2x$ 和 $2y$ Blowfish 模式。
PHP 5.3.2 - 添加了 SHA-256 和 SHA-512。修復了 Blowfish 對無效輪數的行為,返回 "failure" 字串 ("*0" 或 "*1"),而不是回退到 DES。
PHP 5.3.0 - PHP 現在包含自己的 MD5 crypt、Standard DES、Extended DES 和 Blowfish 演算法的實現,如果系統缺少一個或多個演算法的支援,它將使用自己的實現。

更多示例

示例

在此示例中,我們將測試不同的演算法

<?php
// 2 字元 salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "Standard DES not supported.\n<br>";
}

// 4 字元 salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('something','_S4..some')."\n<br>";
}
else
{
echo "Extended DES not supported.\n<br>";
}

// 12 字元 salt 以 $1$ 開頭
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('something','$1$somethin$')."\n<br>";
}
else
{
echo "MD5 not supported.\n<br>";
}

// salt 以 $2a$ 開頭。兩位數成本引數:09。22 個字元
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES not supported.\n<br>";
}

// 16 字元 salt 以 $5$ 開頭。預設輪數為 5000。
if (CRYPT_SHA256 == 1)
{
echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; }
else
{
echo "SHA-256 not supported.\n<br>";
}

// 16 字元 salt 以 $6$ 開頭。預設輪數為 5000。
if (CRYPT_SHA512 == 1)
{
echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 not supported.";
}
?>

上述程式碼的輸出可能是(取決於作業系統)

Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.


❮ PHP 字串參考
×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援