加簽、驗簽的作用
常見的http請求交互過程中,請求參數通過url或者request body等形式傳輸。但是由於http請求的開放性,使得請求參數很容易被攔截篡改。因此,需要對請求參數進行加簽,然后在請求接受方對請求參數進行驗簽,確保兩個簽名是一樣的,驗簽通過之后請求處理方就可以進行業務邏輯處理了。
但是,加簽和驗簽只能解決請求傳輸過程中參數篡改的問題,並不能解決敏感參數傳輸的安全性問題。
加簽、驗簽的處理思路
加簽和驗簽就是在請求發送方將請求參數通過加密算法生成一個sign值,放到請求參數里;請求接受方收到請求后,使用同樣的方式對請求參數也進行加密得到一個sign值,只要兩個sign值相同,就說明參數沒有被篡改。
簽名參數sign生成的方法
1.將所有頭參數(注意是所有參數),出去sign本身,以及值是空的參數,按參數鍵字母升序排序。
2.然后把排序后的參數按參數1值1參數2值2...參數n值n(這里的參數和值必須是傳輸參數的原始值,不能是經過處理的,如不能將“轉成”后再拼接)的方式拼接成一個字符串。
3.把分配給接入方的驗證密鑰key拼接在第2步得到的字符串前面。
4.在上一步得到的字符串前面加上密鑰key(這里的密鑰key是接口提供方分配給接口接入方的),然后計算md5值,得到32位字符串,然后轉成大寫,得到的字符串作為sign的值放到請求參數里。