crypt

crypt

crypt(const char *key, const char *salt)函數為C語言函數之一,返回使用DES、Blowfish或MD5加密的字元串。在不同的操作系統上,本函數的行為不同,某些操作系統支持一種以上的演演算法類型。在安裝時,PHP 會檢查什麼演演算法可用以及使用什麼演演算法。

語法


crypt(str,salt)
參數描述
str必需。規定要編碼的字元串
salt
可選。用於增加被編碼字元數目的字元串,以使編碼更加安全。
如果未提供 salt 參數,則每次調用該函數時會隨機生成一個。
Linux 函數原型
char *crypt(const char *key, const char *salt);
key:要加密的明文。
salt:密鑰。
salt 默認使用DES加密方法。DES加密時,salt只能取兩個字元,多出的字元會被丟棄。

說明


確切的演演算法依賴於 salt 參數的格式和長度。
下面是與 crypt() 函數一起使用的一些常量。在安裝時,由 PHP 設置這些常量:
[CRYPT_SALT_LENGTH]
[CRYPT_STD_DES]
[CRYPT_EXT_DES]
[CRYPT_MD5]
[CRYPT_BLOWFISH]
(1)salt這個字元串如果以$1$開頭,以$結尾,那麼這表示讓crypt用MD5的方式加密,加密后出來的密文格式就是 $1$...$<密文正文> ,夾在$1$和$之間的字元串就是我們指定的密鑰文字。這個密鑰文字最多不能超過8個字元。
(2)如果salt字元串不是(1)方式的格式,那默認就用DES加密方法。DES加密時,salt只能取兩個字元,也就是說,salt最多不能 超過2個字元,多出的字元會被丟棄,用DES加密出來的密文前兩個字元就是密鑰。後面緊跟著的就是真正的密文。
如需更詳細C語言的使用方法,請在GNU系統終端內輸入:

提示和註釋


提示:解密函數是沒有的。crypt() 函數使用一種單向演演算法。

例子


在本例中,我們將測試不同的演演算法:
if (CRYPT_STD_DES == 1) { echo "Standard DES: ".crypt("hello world")."\n
";
} else { echo "Standard DES not supported.\n
";
} if (CRYPT_EXT_DES == 1) { echo "Extended DES: ".crypt("hello world")."\n
";
} else { echo "Extended DES not supported.\n
";
} if (CRYPT_MD5 == 1) { echo "MD5: ".crypt("hello world")."\n
";
} else { echo "MD5 not supported.\n
";
} if (CRYPT_BLOWFISH == 1) { echo "Blowfish: ".crypt("hello world");
} else { echo "Blowfish DES not supported.";
} ?>
輸出類似(依賴於操作系統):
Standard DES: $1$x1..m51.$S9eN2XHx9aLlymysul5S61
Extended DES: $1$1/1..P0.$Ne8OHrwbeApGOs7qMveZO1
MD5: $1$tz0.yg5.$jzwIVaBJMDuO6kjwusuNm.
Blowfish: $1$Tq..gv4.$Sbegig2uoMeuFkptKWnyk1
PHP String 函數
  • 目錄