當(dāng)我們開發(fā)一款A(yù)pp的時候,App需要跟后臺服務(wù)進(jìn)行通信獲取或者提交數(shù)據(jù)。如果我們沒有完善的安全機(jī)制則很容易被別用心的人偽造請求而篡改數(shù)據(jù)。
所以我們需要使用某種安全機(jī)制來保證請求的合法?,F(xiàn)在最常用的辦法是給每個http請求添加一個簽名,服務(wù)端來驗證簽名的合法性,如果簽名合法則執(zhí)行響應(yīng)的操作,如果簽名非法則直接拒絕請求。

簽名算法

簽名算法一般都使用Hash散列算法,常用的有MD5,SHA系列算法。這些算法可以根據(jù)不同的輸入,計算出不同的結(jié)果,而且碰撞的概率很低。
簽名算法跟加密算法不是一回事。很多同學(xué)都會說使用MD5加密一下,其實這是錯誤的。簽名算法不能恢復(fù)原來的數(shù)據(jù),因為它本身并不包含原來數(shù)據(jù)的信息。
而加密方法不同,加密方法是可以根據(jù)加密結(jié)果重新推算出原來的數(shù)據(jù)的。
HMAC SHA作為一種更加安全的簽名算法,使用一個Key來影響簽名的結(jié)果。這樣同樣的輸入配合不同的Key可以得出不同的簽名,更加安全。

 public static string HmacSHA256(string secretKey,string plain)        {            var keyBytes = Encoding.UTF8.GetBytes(secretKey);            var plainBytes = Encoding.UTF8.GetBytes(plain);            using (var hmacsha256 = new HMACSHA256(keyBytes))
            {                var sb = new StringBuilder();                var hashValue = hmacsha256.ComputeHash(plainBytes);                foreach (byte x in hashValue)
                {
                    sb.Append(String.Format("{0:x2}", x));
                }                return sb.ToString();
            }
        }

簽名的參數(shù)

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式