三方对接时常用的加密方式
一般在三方暴露對(duì)外api時(shí)都會(huì)通過(guò)加密參數(shù)來(lái)保證數(shù)據(jù)的不可篡改行,而加密方式多種多樣,像MD5、sha1、Base64、sha256、AES等各種加密編碼算法。
而在驗(yàn)證用戶方面會(huì)用到分配給用戶的appkey及appSecret等信息,在參數(shù)傳遞的時(shí)候會(huì)將appKey或者appId作為公共參數(shù)傳遞以在三方符合獲取此賬戶權(quán)限及秘鑰,而秘鑰則是隱示的存在參數(shù)加密編碼中,三方按相同規(guī)則加密編碼比對(duì)傳輸編碼來(lái)保證數(shù)據(jù)沒(méi)有被篡改。
而還有可能會(huì)對(duì)接口版本跟請(qǐng)求有效期進(jìn)行傳參限制,會(huì)增加版本參數(shù)v及時(shí)間戳等參數(shù)來(lái)限制暴露接口的安全性及多版本的非同加密方式。
以下是幾個(gè)三方對(duì)接時(shí)的加密方式:
1. 電子簽章法大大:
按上圖的摘要計(jì)算流程來(lái)分析就是如下代碼示例和步驟
Base64(SHA1(app_id+MD5(timestamp)+SHA1(app_secret+ sort)) ) 步驟 1.序列化需要參與 A.將參與摘要計(jì)算的業(yè)務(wù)參數(shù)按字典升序排列 B.將 app_secret 附加到字符串串前 步驟 2.對(duì)得到的字符串進(jìn)?SHA1 加密步驟 3.計(jì)算 timestamp的MD5值,并和app_id,步驟 2 中得到的字符串拼接得到新的字符串 步驟 4.對(duì)步驟3中得到的字符串進(jìn)行SHA1 加密 步驟 5.對(duì)步驟 4 中得到的字符串進(jìn)?base64 加密 在傳參時(shí)會(huì)分公共參數(shù)與業(yè)務(wù)參數(shù),公共參數(shù)是必要的,而業(yè)務(wù)參數(shù)則是針對(duì)每個(gè)接口的業(yè)務(wù)規(guī)則所對(duì)應(yīng)的參數(shù) 法大大的公共參數(shù)有
| app_id | String | 是 | 接入方ID |
| timestamp | String | 是 | 請(qǐng)求時(shí)間 yyyyMMddHHmmss |
| v | String | 是 | 版本號(hào) |
| msg_digest | String | 是 | 簽名摘要 |
2. 諸葛零售云:
公共參數(shù)
| app-key | String | 是 | 零售云為租?分配 |
| timestamp | String | 是 | 調(diào)?API時(shí)的系統(tǒng)時(shí)間戳,時(shí)區(qū)為GMT+0800 |
| v | String | 是 | 版本號(hào),固定值1.0 |
| sign | String | 是 | 簽名串 |
參與簽名的參數(shù)
| 參數(shù)? | 說(shuō)明 |
| timestamp | 調(diào)?API時(shí)的系統(tǒng)時(shí)間戳,時(shí)區(qū)為GMT+0800 |
| app_key | 零售云為租?分配 |
| app_secret | 零售云為租?分配 |
| v | 版本號(hào),固定值1.0 |
| path | 請(qǐng)求路徑 |
簽名格式
把所有參數(shù)名和參數(shù)值進(jìn)?拼接(參數(shù)值以“xxx”表?),拼接時(shí)不允許有跨?、空格等空? 字符: app_keyxxxpathxxxtimestampxxxv1.0 將零售云分配的 app_secret 拼接到字符串的兩端( app_secret 取值以“SSS”表?): SSSapp_keyxxxpathxxxtimestampxxxv1.0SSS ? SHA256 算法對(duì)原始串進(jìn)?摘要,偽代碼如下: String sign = SHA256("SSSapp_keyxxxpathxxxtimestampxxxv1.0SSS")最后得到的編碼就是參數(shù)sign
3. 銀豹:
PosPal 銀豹收銀系統(tǒng)
請(qǐng)求頭
| time-stamp | String | 是 | 時(shí)間戳, |
| data-signature | String | 是 | 1:appKey,請(qǐng)求體 拼接 2:md5 加密(32位) 3:轉(zhuǎn)為大寫(xiě) |
這個(gè)比較簡(jiǎn)單,將appKey與請(qǐng)求體拼接后使用MD5加密得到編碼串,編碼串全部轉(zhuǎn)為大寫(xiě)得到簽名串,但是流程都是一致的
總結(jié)
以上是生活随笔為你收集整理的三方对接时常用的加密方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 森林水文学类毕业论文文献都有哪些?
- 下一篇: wiki上关于CUDA的介绍(显卡算力查