crypt

crypt

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

基本介紹

  • 中文名:crypt 庫
  • 外文名:crypt
  • 參數1:str
  • 參數2:salt
  • str:需加密的字元串
  • salt:密碼學中的鹽值
語法,說明,提示和注釋,例子,

語法

crypt(str,salt)
參數
描述
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系統終端內輸入:
$ man 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 函式

相關詞條

熱門詞條

聯絡我們