系統在提供接口給第三方系統使用時,通常為了安全性會做接口加密。
設計原則 :使用HTTPS安全協議 或 傳輸內容使用非對稱加密,這裏采用後者。
在對參數進行加密,生成sign時,相同的參數兩次加密的結果不壹樣。
加密規則:
1.拼接出來的字符串不壹致
測試時,在加密前將要加密的字符串打印出來比較,發現兩次字符串壹致。
2.編碼問題
加密時,兩次的默認編碼不壹致。
在上述加上默認編碼: byte[] btInput = content.getBytes("utf-8"); ,問題解決。
簡單實現:
1.接口調用方和接口提供方約定好統壹的參數加密算法。
2.接口調用方在調用時把加密後的signature放在參數中去請求接口。
3.判斷時間戳有效期。
4.將參數用約定號的加密算法進行加密,與參數中的signature進行比較,壹致則調用接口。