md5為計算機安全領域廣泛使用的一種雜湊函式,用以提供訊息的完整性保護。用於確保資訊傳輸完整一致。是計算機廣泛使用的雜湊演算法之一(又譯摘要演算法、雜湊演算法),主流程式語言普遍已有md5實現。將資料(如漢字)運算為另一固定長度值,是雜湊演算法的基礎原理,md5的前身有md2、md3和md4。
ps:寫這篇文章的本意是把我在工作中使用的md5加密技巧分享出來,和大家一起交流,可能應為水平有限會有遺漏之處望大家包含,也請大家提出建議我會進一步完善.
1、壓縮性:任意長度的資料,算出的md5值長度都是固定的。
2、容易計算:從原資料計算出md5值很容易。
3、抗修改性:對原資料進行任何改動,哪怕只修改1個位元組,所得到的md5值都有很大區別。
4、弱抗碰撞:已知原資料和其md5值,想找到乙個具有相同md5值的資料(即偽造資料)是非常困難的。
5、強抗碰撞:想找到兩個不同的資料,使它們具有相同的md5值,是非常困難的。
根據以上的特定我們能總結出幾個根據以上特點衍生出來可以供我們使用的特性:
1.方便儲存:md5加密出來都是32位的字串,能夠給定固定大小的空間儲存,傳輸,驗證
2.檔案加密:md5運用在檔案加密上很有優勢,應為只需要32為字串就能對乙個巨大的檔案進行驗證完整性
3.不 可 逆:md5加密出來只會擷取末尾32位,具有良好的安全性,如果是對於引數加密很難偽造md5
4.加密損耗低:md5加密對於效能的消耗微乎其微(我獲得的結果是:0
.001毫秒)
我在實踐中常常會用到的md5校驗加密一般運用場景:使用者密碼,請求引數,檔案校驗
對於使用者密碼加密最高境界就是:別人獲得你資料庫的使用者資料別人也沒有辦法獲知密碼.要達到就要有一套複雜的加密規則,一般常用的規則比如:
md5(md5(使用者名稱+使用者密碼)+md5(key+專案名+公司名)) 這樣可以避免和別人碰庫不排除別人用md5來攻擊你的伺服器來匹配.
當然還可以自定很多種加密方法,就算知道加密方法也幾乎無法去推送出使用者原密碼是什麼
都與伺服器來言排除系統問題最大的問題就是害怕請求被攔截,攔截修改之後就有很多漏洞的可能性了
為了避免被攔截,引數被修改這種檔案的常用方法就是對請求引數進行校驗,就算攔截了請求引數修改了只要模擬不出md5加密出來的值,在伺服器過濾器直接就會進行攔截.
我這邊推薦的請求校驗方法在傳遞引數的時候帶上 md5值 隨機數 時間戳 當然這幾個都是由客戶端生成 md5=md5(隨機數+時間戳+md5(key+公司名+專案名)) 當然這個規則也是可以定製的
請求引數在伺服器***就用客戶端傳遞過來的 隨機數 時間戳 來做校驗如果不通過就不讓繼續訪問(在這裡的隨機數 時間戳在後面的請求安全請求唯一性驗證中會起到很大的作用所以建議保留)
當然對於一些已經一些很小很小的檔案來說可以不用md5校驗應為基本上都是一次請求就完成了上傳,而且顯示的時候也不需要驗證完不整.
但是如果是遇到了大檔案上傳md5 就起到作用了,當然不是吧乙個幾個g 的檔案一次性上傳使用md5校驗,這邊100%會失敗 就算傳遞到服務端了 這個時間是不能被接受的 ,而且伺服器最好是對請求做好限制(以後會開一篇來單獨**檔案上傳的問題)
我們對於大檔案上傳的處理方式是進行分片上傳,也就是所謂的斷點續傳,裡面的實現機制
如果有乙個5mb的檔案 客戶端把它分割成5份 1mb的檔案 在上傳的時候 上傳兩個md5值 乙個是當前上傳的片1mb檔案流的md5 還有乙個就是拼接之後的md5(如果現在上傳的是第二片 這個md5就應該是第一片加上第二片的md5)通過這樣的方式能保證檔案的完整性
當如果檔案傳到一半斷了,使用者換了臺機器傳 通過驗證檔案md5 值就可以得知使用者已經傳到了第幾片 就可以告訴使用者從第幾片開始傳遞 就解決了這個問題
在不知不覺中md5校驗早已經運用到我們生活中的點點滴滴,無時無刻不在使用者md5.通過以上的例子說明了md5在我們伺服器開發安全中扮演著不可替代的角色,在日常的開發中使用md5校驗技術可以有效的避免莫些安全性的問題.
提高MD5安全性
username password tom123456 注意 永遠不要使用這種方式 驗證流程 1.提交使用者名稱密碼 2.計算密碼雜湊值 3.比對儲存的雜湊值和計算出的雜湊值是否相等 使用雜湊演算法 可以是md5,sha1,sha256,sha512 結果長度依次增長 123456sha 512ba...
為什麼md5是不安全的?
正確的說法為 不正確的使用md5是不安全的。cmd5這個 你可以把這個 理解為乙個超級大的彩虹表,你可以反向查詢hash對應的明文,當然只能查詢到在表裡面的資料了。生日,手機號,純數字的,如果有確定位數那就更好了,通過遍歷的方式,可以生成包含明文和hash值的一張超級大的表,通過查詢hash值,反向...
用MD5儲存密碼的安全防範
兩個不同的且均可正常執行的exe程式檔案,具有相同的md5校驗值,這不僅僅是理論上的可能,而是現實,已經有人寫出了這樣的兩個程式了,關於md5碰撞,據說是山東大學王小雲教授的一篇報告震驚國際密碼學界,他找到了一種能夠比較快速的計算md5碰撞的演算法。最早我聽到這個報道的時候還以為是忽悠呢,俺中國人被...