您好,登錄后才能下訂單哦!
這篇文章給大家介紹MD5中怎么防止數據被篡改,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
一、基本思路
最近做IM系統, 移動端一個同學問我怎么防止App發出來的數據被篡改(防止內容泄露更重要),我想到了“簽名校驗 ”的方法。
大致思路是把發送的數據(用src表示)和一段我們自己才知道的字符串(用key表示),通過一個算法變為一段簽名文本(用sign表示)。 在服務器端接收到數據src和sign后,用相同的算法計算出簽名文本(用sign1)表示。比較sign和sign1是否一致。如果一致表明數據(src)沒有被篡改。
二、算法需求
怎么簡單理解“簽名校驗”呢?
首先需要找到一個函數f(x), 通過src,key求得sign,如下:
sign = f(src,key);
這個函數f(x)要滿足一下幾個條件
1、容易計算,有大量內容需要簽名時, 速度很重要
2、壓縮性,不管src多大計算出的sign需要保持定長。 方便比較,且不至于大量消耗內存空間
3、抗修改,對原數據進行任何改動, 哪怕只修改1個字節,得到的sign值都有很大區別
4、強抗碰撞(不可逆), 知道sign,想反解出src和key不可能或非常困難。即找不到函數f(x)的可逆函數
三、具體做法
f(x)選用MD5算法, MD5全名Message-Digest Algorithm 5(信息-摘要算法)是一種不可逆的加密算法。
1、參數處理, 將需要簽名校驗的參數以及對應的值按照一定規則處理成字符串src
2、令signSrc = src+key
3、sign = MD5Encrypt.getMessageDigest(signSrc);
客戶端按照這個方法計算得到sign,服務端再按相同方法計算得到sign1, 比較兩者是否一致,即可完成校驗。
關于MD5中怎么防止數據被篡改就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。