語法
參數
| 描述
|
str
| 必需。規定要編碼的字元串。
|
salt
| 可選。用於增加被編碼字元數目的字元串,以使編碼更加安全。 如果未提供 salt 參數,則每次調用該函式時會隨機生成一個。
|
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() 函式使用一種單向算法。
例子
在本例中,我們將測試不同的算法:
<?php
if (CRYPT_STD_DES == 1) { echo "Standard DES: ".crypt("hello world")."\n<br />";
} else { echo "Standard DES not supported.\n<br />";
} if (CRYPT_EXT_DES == 1) { echo "Extended DES: ".crypt("hello world")."\n<br />";
} else { echo "Extended DES not supported.\n<br />";
} if (CRYPT_MD5 == 1) { echo "MD5: ".crypt("hello world")."\n<br />";
} else { echo "MD5 not supported.\n<br />";
} 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