PHP中幾種常見的加密形式
- md5()加密演算法
- crypt()加密演算法
- sha1()加密演算法
- url()加密演算法
- base64()加密演算法
md5加密
- md5是單向的,只能加密,不能解密
- 輸入任意長度的值,輸出的都是128位資訊值
- 不同的輸入對應的一定是不同的輸出,保證唯一性
- md5還是會出現碰撞現象
- 關於md5的詳細介紹,包括優缺點,見:MD5及加密演算法優劣
crypt加密
- crypt也是單向的,只能加密,不能解密
- crypt在不同系統上的加密演算法是不一樣的,參見:PHP手冊-crypt
- 需要兩個引數,兩個引數都是必選的,在PHP5之後:
- 第一個引數是你需要加密的字串
- 第二個引數是干擾串(或者叫做金鑰),最多兩位字元,會加在密文的開頭兩位
- 從 PHP 5.3.0 起,PHP 包含了它自己的實現,並將在系統缺乏相應演算法支援的時候使用它自己的實現。
sha1加密
- sha1也是單向的,只能加密,不能解密
URL編碼加密
- 兩個函式:urlencode()和urldecode(),這個加密是雙向的,能加密,頁能解密
- 加密規則:給定字串中除了:字母,數字,下劃線,中劃線,點之外的其他所有字元都會被加密為百分號後跟兩位的16進位制數,空格被編碼為加號
- 與上面兩個稍微有點不同的兩個函式:rawurlencode()和rawurldecode()
- 區別就是urlencode是把空格加密成加號(+),而rawurlencode是把空格加密成%20
- 就這一個區別,推薦使用rawurlencode函式對,統一標準
base64加密
- bsae64不是真正意義上的加密,而是對資料進行編碼和解碼
- 是雙向的,可以編碼,也可以解碼
- 兩個函式:base64_encode和base64_decode
- 主要應用在圖片的編碼和解碼上
總結:
資訊加密技術分類
- 單項雜湊加密
- 是指:通過對不同輸入長度的資訊進行雜湊計算,得到固定長度的輸出,這個雜湊計算的過程是單向的,即不能對固定長度的輸出進行計算從而獲得輸入資訊
- 對稱雜湊加密
- 是指:加密和解密使用的金鑰是同一個金鑰或者可以互相推算
- 優點:演算法簡單,效率高
- 缺點:加解密使用的同一個金鑰,如果金鑰被盜,丟失,洩露,密文實際上就跟明文無差別
- 非對稱雜湊加密
- 是指:加解密使用的金鑰不是同一個金鑰,其中一個對外公開,被稱作公鑰,另一個只有所有者知道
- 用公鑰加密的密文,只能使用私鑰才能解開
- 反之,用私鑰加密的密文,也只能用公鑰才能解開
- 實際的意思就是說:加密的時候是一個金鑰,解密是另一個金鑰,其實並不區分什麼是公私金鑰
- 應用領域:一般在資訊保安傳輸和數字簽名等
沒有什麼加密方式是能一勞永逸的,破解只是時間問題