介面安全之簽名

2021-09-11 17:31:24 字數 1201 閱讀 3583

1.   介面請求採用https的post方式,返回資訊全部採用json格式報文。

2.   請求和返回報文雙方約定採用utf-8編碼,並對請求引數做urlencoder。

3.   簽名規則(簽名在urlencoder之前做。)

4.   商戶金鑰  207b6c6843a20c4acf7e8583b9d463c6

簽名規則:

第1步: 

將所有引數(注意是所有引數),除去sign本身,以及值是空的引數,按引數名字母公升序排序。

第2步: 

然後把排序後的引數按引數1值1引數2值2…引數n值n(這裡的引數和值必須是傳輸引數的原始值,不能是經過處理的,如不能將"轉成」後再拼接)的方式拼接成乙個字串。

第3步: 

把分配給接入方的驗證金鑰key拼接在第2步得到的字串前面。

第4步:

在上一步得到的字串後面加上商戶金鑰 (介面提供方分配給介面接入方的),然後計算md5值,得到32位字串

第5步: 

將第4步得到的 字串轉成大寫,得到的字串作為sign的值。

第三步,在上面拼接得到的字串後加上商戶金鑰,md5(簽名+金鑰)得到新的字串af538d756f3df274081eeedee1dca593

第四步,然後將這個字元然後轉為大寫,得到af538d756f3df274081eeedee1dca593這個值即為sign簽名值。

二、簽名驗證方法:

根據前面描述的簽名引數sign生成的方法規則,計算得到引數的簽名值,和引數中通知過來的sign對應的引數值進行對比,如果是一致的,那麼就校驗通過,如果不一致,說明引數被修改過。

urlencoder:

轉碼前sign=af538d756f3df274081eeedee1dca593&imei=2143124&os=%25e8%258b%25b9%25e6%259e%259c&

&uid=1232&time_stamp=2015-02-03&username=15501108967&pwd=123456

轉碼後sign%3d54d0b42dd9899b15a8ebe77cb6bbeb73%26imei%3d%25e8%258b%25b9%25e6%259e%

1232%26ver%3d123.%26uid%3d111%26time_stamp%3d2016-05-27%26username%3d15501108967%

26pwd%3d123456

**

介面安全之簽名

第1步 將所有引數 注意是所有引數 除去sign本身,以及值是空的引數,按引數名字母公升序排序。第2步 然後把排序後的引數按引數1值1引數2值2 引數n值n 這裡的引數和值必須是傳輸引數的原始值,不能是經過處理的,如不能將 轉成 後再拼接 的方式拼接成乙個字串。第3步 把分配給接入方的驗證金鑰key...

介面安全 簽名驗證

為防止第三方冒充客戶端請求伺服器,可以採用引數簽名驗證的方法 將請求引數中的各個鍵值對按照key的字串順序公升序排列 大小寫敏感 把key和value拼成一串之後最後加上金鑰,組成key1value1key2value2privatekey的格式,轉成utf 8編碼的位元組序列後計算md5,作為請求...

介面安全 簽名驗證

為防止第三方冒充客戶端請求伺服器,可以採用引數簽名驗證的方法 將請求引數中的各個鍵值對按照key的字串順序公升序排列 大小寫敏感 把key和value拼成一串之後最後加上金鑰,組成key1value1key2value2privatekey的格式,轉成utf 8編碼的位元組序列後計算md5,作為請求...