對php中加密函數的總結

來源:互聯網
上載者:User
總的說來,能實現加密的函數有: (1)md5() (2)sha1() (3)crc32() (4)crypt() (5)uniqid()

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

定義和用法

md5() Function Compute字串的 MD5 散列。

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

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

文法
md5(string,raw)
參數 描述
string

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

raw

raw

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

  • TRUE - 原始 16 字元二進位格式
  • FALSE - 預設。32 字元十六進位數

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

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

輸出:

8b1a9953c4611296a827abf8c47804d7

其次來說sha1()函數:

定義和用法

sha1() Function Compute字串的 SHA-1 散列。

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

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

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

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

  • TRUE - 原始 20 字元二進位格式
  • FALSE - 預設。40 字元十六進位數

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

         

其次是crc32()函數:

定義和用法

crc32() Function Compute一個字串的 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: 461707669With %u: 461707669
例子 2

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

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

輸出:

Without %u: -1959132156With %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() 函數(請在字串函數參考中尋找)。

例子
<?phpecho uniqid();?>

輸出類似:

4415297e3af8c

然後是crypt()函數:

定義和用法

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

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

文法

crypt(str,salt)

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

salt

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

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

提示和注釋

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

例子

在本例中,我們將測試不同的演算法:

<?phpif (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]
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.