複製鏈接
請複製以下鏈接發送給好友

crypt

(C語言函數之一)

鎖定
crypt(const char *key, const char *salt) 函數為C語言函數之一,返回使用 DES、Blowfish 或 MD5 加密的字符串。 在不同的操作系統上,本函數的行為不同,某些操作系統支持一種以上的算法類型。在安裝時,PHP 會檢查什麼算法可用以及使用什麼算法。
中文名
crypt 庫
外文名
crypt
參數1
str
參數2
salt
str
需加密的字符串
salt
密碼學中的鹽值

crypt語法

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

crypt説明

確切的算法依賴於 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系統終端內輸入:
$ man crypt

crypt提示和註釋

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

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
PHP String 函數
[1] 
參考資料