對php中加密函數的總結

總的說來,能實現加密的函數有:

(1)md5()

 (2)sha1()

 (3)crc32()

 (4)crypt()

 (5)uniqid()

首先,md5()方法的詳解:

定義和用法

md5() 函數計算字符串的 MD5 散列。

md5() 函數使用 RSA 數據安全,包括 MD5 報文摘譯算法。

如果成功,則返回所計算的 MD5 散列,如果失敗,則返回 false。

語法

md5(string,raw)
參數 描述
string

必需。規定要計算的字符串。

raw

 

可選。規定十六進制或二進制輸出格式:

  • TRUE - 原始 16 字符二進制格式
  • FALSE - 默認。32 字符十六進制數

註釋:該參數是 PHP 5.0 中添加的。

 

 

例子

<?php
$str = "Hello";
echo md5($str);
?>

輸出:

8b1a9953c4611296a827abf8c47804d7

 

 

其次來說sha1()函數:

定義和用法

sha1() 函數計算字符串的 SHA-1 散列。

sha1() 函數使用美國 Secure Hash 算法 1。

如果成功,則返回所計算的 SHA-1 散列,如果失敗,則返回 false。

語法

sha1(string,raw)
參數 描述
string 必需。規定要計算的字符串。
charlist

可選。規定十六進制或二進制輸出格式:

  • TRUE - 原始 20 字符二進制格式
  • FALSE - 默認。40 字符十六進制數

註釋:該參數是 PHP 5.0 中添加的。

 

 

其次是crc32()函數:

定義和用法

crc32() 函數計算一個字符串的 crc32 多項式。

該函數可用於驗證數據的完整性。

語法

crc32(string)

string必需。規定要計算的字符串。

說明

生成 string 參數的 32 位循環冗餘校驗碼多項式。這通常用於檢查傳輸的數據是否完整。

提示和註釋

提示:由於 PHP 的整數是帶符號的,許多 crc32 校驗碼將返回負整數,因此您需要使用 sprintf() 或 printf() 的 "%u" 格式符來獲取表示無符號 crc32 校驗碼的字符串。

例子

例子 1

在本例中,我們將在使用以及不使用 "%u" 格式符的情況下,輸出 crc32() 的結果(注意結果是相同的):

<?php
$str = crc32("Hello world!");
echo 'Without %u: '.$str."<br />";
echo 'With %u: ';
printf("%u",$str);
?>

輸出:

Without %u: 461707669
With %u: 461707669

例子 2

在本例中,我們將在使用以及不使用 "%u" 格式符的情況下,輸出 crc32() 的結果(注意結果是不相同的):

<?php
$str = crc32("Hello world.");
echo 'Without %u: '.$str."<br />";
echo 'With %u: ';
printf("%u",$str);
?> 

輸出:

Without %u: -1959132156
With %u: 2335835140

 

然後是uniqid()函數:

定義和用法

uniqid() 函數基於以微秒計的當前時間,生成一個唯一的 ID。

語法

uniqid(prefix,more_entropy)

prefix可選。爲 ID 規定前綴。如果兩個腳本在相同的微妙生成 ID,該參數很有用。

more_entropy可選。規定位於返回值末尾的更多的熵。

說明

如果 prefix 參數爲空,則返回的字符串有 13 個字符串長。如果 more_entropy 參數設置爲 true,則是 23 個字符串長。

如果 more_entropy 參數設置爲 true,則在返回值的末尾添加額外的熵(使用組合線形同餘數生成程序),這樣可以結果的唯一性更好。

返回值

以字符串的形式返回唯一標識符。

提示和註釋

註釋:由於基於系統時間,通過該函數生成的 ID 不是最佳的。如需生成絕對唯一的 ID,請使用 md5() 函數(請在字符串函數參考中查找)。

例子

<?php
echo uniqid();
?>

輸出類似:

4415297e3af8c

 

然後是crypt()函數:

定義和用法

crypt() 函數返回使用 DES、Blowfish 或 MD5 加密的字符串。

在不同的操作系統上,本函數的行爲不同,某些操作系統支持一種以上的算法類型。在安裝時,PHP 會檢查什麼算法可用以及使用什麼算法。

語法

crypt(str,salt)

str必需。規定要編碼的字符串。

salt

可選。用於增加被編碼字符數目的字符串,以使編碼更加安全。

如果未提供 salt 參數,則每次調用該函數時會隨機生成一個。

提示和註釋

提示:解密函數是沒有的。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$r35.Y52.$iyiFuvM.zFGsscpU0aZ4e. 
Extended DES not supported. 
MD5: $1$BN1.0I2.$8oBI/4mufxK6Tq89M12mk/ 
Blowfish DES not supported.

說明

確切的算法依賴於 salt 參數的格式和長度。

下面是與 crypt() 函數一起使用的一些常量。在安裝時,由 PHP 設置這些常量:

  • [CRYPT_SALT_LENGTH]
  • [CRYPT_STD_DES]
  • [CRYPT_EXT_DES]
  • [CRYPT_MD5]
  • [CRYPT_BLOWFISH]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章