一、基本思路
大致思路是把傳送的資料(用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加密及防止篡改
md5加密 md5的全稱是message digest algorithm 5 資訊 摘要演算法 它是一種單向加密演算法,可以將輸入的資訊加密轉換為128位固定長度的雜湊值,用於檢驗資料傳輸過程中的完整性。特點 1.不可逆運算 2.具有高度的離散性 3.對相同的資料加密,得到的結果是一樣的 也就是複...
MD5資料加密小記
static nsstring token hjsdfklsa1234 加 令牌 令牌內容可自由發揮 nsstring mymd5 nsstring md5 return result property nonatomic,strong nsstring loginpwd 宣告加密口令 nsstri...
MD5加密儲存資料
為了保證資料的隱蔽性以及處於安全方面的考慮,我們往往會將一些存入資料庫的有關密碼的資料使用加密的方式儲存起來,其中md5就是一種常用的加密方式 我知道的有兩種方法都可以達到加密的效果 1.在資料插入前加密 2.在插入資料時加密 2.1 在資料傳入前加密 commons codecgroupid co...