PHP內建加密函數

來源:互聯網
上載者:User
在網站的開發過程中,常常需要對部分資料(如使用者密碼)進行加密,本文主要介紹PHP的幾個常見的加密函數

Md5()密碼編譯演算法

方式: 單向加密

文法: md5(string $str [, bool $raw_output = false])

$str:原始字串

$raw_output:如果可選的raw_output被設定為true, 那麼md5報文摘要將以16位元組長度的原始二進位格式返回. 返回以32位字元十六進位數字形式返回散列值

md5二次加密:md5(md5($string, true))

Crypt()密碼編譯演算法

方式: 單向加密

文法: string crypt(string $str[, string $salt]) , 返回一個基於標準UNIX DES演算法或系統上其它可用的替代演算法的三列字串

$str: 需要加密的明文

$salt: 加密時的幹擾串,是編碼更安全

注意: 如果加密時沒有加上這個$salt參數, 將隨機產生一個幹擾串, 否則重新整理加密秘文不變

演算法常量:

[CRYPT_SALT_LENGTH]

預設的加密長度。使用標準的 DES 加密,長度為 2

[CRYPT_STD_DES]

基於標準 DES 演算法的散列使用 "./0-9A-Za-z" 字元中的兩個字元作為鹽值。在鹽值中使用非法的字元將導致 crypt() 失敗。

[CRYPT_EXT_DES]

擴充的基於 DES 演算法的散列。其鹽值為 9 個字元的字串,由 1 個底線後面跟著 4 位元組迴圈次數和 4 位元組鹽值組成。它們被編碼成可列印字元,每個字元 6 位,有效位最少的優先。0 到 63 被編碼為 "./0-9A-Za-z"。在鹽值中使用非法的字元將導致 crypt() 失敗。

[CRYPT_MD5]

MD5 散列使用一個以 $1$ 開始的 12 字元的字串鹽值。

[CRYPT_BLOWFISH]

Blowfish 演算法使用如下鹽值:“$2a$”,一個兩位 cost 參數,“$” 以及 64 位元由 “./0-9A-Za-z” 中的字元組合而成的字串。在鹽值中使用此範圍之外的字元將導致 crypt() 返回一個Null 字元串。兩位 cost 參數是迴圈次數以 2 為底的對數,它的範圍是 04-31,超出這個範圍將導致 crypt() 失敗。

CRYPT_SHA256

SHA-256 演算法使用一個以 $5$ 開頭的 16 字元字串鹽值進行散列。如果鹽值字串以 “rounds=<N>$” 開頭,N 的數字值將被用來指定散列迴圈的執行次數,這點很像 Blowfish 演算法的 cost 參數。預設的迴圈次數是 5000,最小是 1000,最大是 999,999,999。超出這個範圍的 N 將會被轉換為最接近的值。

CRYPT_SHA512

SHA-512 演算法使用一個以 $6$ 開頭的 16 字元字串鹽值進行散列。如果鹽值字串以 “rounds=<N>$” 開頭,N 的數字值將被用來指定散列迴圈的執行次數,這點很像 Blowfish 演算法的 cost 參數。預設的迴圈次數是 5000,最小是 1000,最大是 999,999,999。超出這個範圍的 N 將會被轉換為最接近的值。

例:

if(CRYPT_MD5){  echo "MD5加密:".crypt('something','$1$somethin$');}

Sha1()密碼編譯演算法

方式: 單向加密

文法: string sha1(string $str [, bool $raw_output=false]) 計算字串的sha1散列值

$str: 加密的字串

$raw_output: 如果可選的raw_output參數被設定為TRUE, 那麼sha1摘要將以20字元長度的原始格式返回, 否則傳回值是一個40字串長度的十六進位數字.

URL編碼加密技術

編碼URL字串: urlencode(string $str)

解碼已編碼的URL字串: urldeocde(string $str)

編碼規範: 此字串中除了-_.之外的所有非字母數字字元都將被替換成百分比符號(%)後跟兩位十六進位數, 空格則編碼為加號(+)

按照RFC1738對URL進行編碼: rawurlencode(string $str) : 返回從字串,把空格編碼為%20

對已編碼的字串進行解碼: rawurldecode(string $str) : 返回字串, 此字串中百分比符號%後跟兩位十六進位的序列豆將被替換成原義字元

urlencode和rawurlencode的區別只在於空格.

Base64編碼加密技術

使用base64對data進行編碼: base64_encode(string $data)

對使用MIME base64編碼的資料進行解碼: base64_decode(string $data[, $strict=false]) ; $strict:如果輸入的資料超出了base64的字母表,則返回false.

base64編碼的圖片還可以直接放在<img>標籤中顯示:

<img src="data:image/jpeg;base64,編碼字串" alt=""/>

<img src="data:;base64,編碼字串" alt=""/>

資訊加密技術:

1 單項散列加密:

指通過不同輸入的長度的資訊進行散列計算, 得到固定長度的輸出, 這個散列計算過程是單向的, 既不能對固定長度的輸出進行計算從而活兒輸出資訊.

2 對稱散列加密

指加密和解密的密匙是同一個密匙或者可以互相推算.

3 非對稱散列加密

非對稱式加密和解密的密匙不是同一個密匙, 其中一個對外公開, 被稱作公開金鑰, 另一個只有所有者知道.

以上就是本文的全部內容,希望對大家的學習有所協助。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.