哈希算法應用普遍,如在PHP中,全部的數據 不管變量,常量,類,屬性 都用Hash表來實現.php
經常使用的哈希算法:html
一、php內核哈希算法:time33 ,算法
算法:對字符串的每一個字符,迭代的乘以33;安全
原型: hash(i) = hash(i-1)*33 + str[i] ;服務器
在使用時,存在一個問題,對類似的字符串生成的hashcode也相似,有人提出對原始字符串,進行MD5,而後再計算hashcode。網絡
php實現:編碼
二、Message Digest Algorithm MD5加密
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用於確保信息傳輸完整一致。是計算機普遍使用的雜湊算法之一,其中比較有名的還有sha-1、RIPEMD以及Haval等。spa
MD5算法具備如下特色:.net
一、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
二、容易計算:從原數據計算出MD5值很容易。
三、抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所獲得的MD5值都有很大區別。
四、強抗碰撞:已知原數據和其MD5值,想找到一個具備相同MD5值的數據(即僞造數據)是很是困難的。MD5的典型應用是對一段Message(字節串)產生fingerprint(指紋),以防止被「篡改」。
三、RC4
在密碼學領域,RC4( 又名ARC4 或者ARCFOUR )是應用最普遍的流加密算法,應用在安全套接字層(SSL)(用來保護網絡上傳輸的數據)和WEP(無線網絡數據保護)上
四、base64
基於64個可打印字符來表示二進制數據的方法。
http://php.net/manual/en/function.base64-decode.php
咱們知道在計算機中任何數據都是按ascii碼存儲的,而ascii碼的128~255之間的值是不可見字符。而在網絡上交換數據時,好比說從A地傳到B地,每每要通過多個路由設備,因爲不一樣的設備對字符的處理方式有一些不一樣,這樣那些不可見字符就有可能被處理錯誤,這是不利於傳輸的。因此就先把數據先作一個Base64編碼,通通變成可見字符,這樣出錯的可能性就大下降了。
對證書來講,特別是根證書,通常都是做Base64編碼的,由於它要在網上被許多人下載。電子郵件的附件通常也做Base64編碼的,由於一個附件數據每每是有不可見字符的。
1.標準base64只有64個字符(英文大小寫、數字和+、/)以及用做後綴等號;
2.base64是把3個字節變成4個可打印字符,因此base64編碼後的字符串必定能被4整除(不算用做後綴的等號);
3.等號必定用做後綴,且數目必定是0個、1個或2個。這是由於若是原文長度不能被3整除,base64要在後面添加\0湊齊3n位。爲了正確還原,添加了幾個\0就加上幾個等號。顯然添加等號的數目只能是0、1或2;
4.嚴格來講base64不能算是一種加密,只能說是編碼轉換。使用base64的初衷。是爲了方便把含有不可見字符串的信息用可見字符串表示出來,以便複製粘貼;
若是頁面上有太多的圖片則會屢次請求服務器,若是直接文本存入html能夠減小請求次數??????
五、rsa簽名
六、DES全稱爲Data Encryption Standard
七、校驗和:Checksum
總和檢驗碼,校驗和。在數據處理和數據通訊領域中,用於校驗目的的一組數據項的和,保證數據的完整性和準確性.
十六進制串:
1 |
|
的校驗和是: 24 (十六進制)
若是校驗和的數值超過十六進制的FF,也就是255. 就要求其補碼做爲校驗和