您好,登錄后才能下訂單哦!
這篇文章主要講解了“支付寶支付加密規(guī)則是怎么樣的”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“支付寶支付加密規(guī)則是怎么樣的”吧!
在了解簽名前,先回顧一下支付的交互流程。如上圖所示,支付的過(guò)程中可以大概分為6個(gè)步驟。
用戶選擇自己的商品提交訂單。
商家服務(wù)器將商品信息和所需要的金額發(fā)給支付寶,生成支付寶訂單。
支付寶訂單返回成功之后生成一個(gè)支付頁(yè)面,方便手機(jī)支付或者網(wǎng)頁(yè)支付。
手機(jī)調(diào)起支付寶app進(jìn)行支付。
輸入支付密碼發(fā)送給支付寶服務(wù)器。
支付寶服務(wù)器轉(zhuǎn)賬成功,告知商家服務(wù)器某個(gè)訂單的金額轉(zhuǎn)賬成功。
這6個(gè)步驟中,最為重要的是步驟2和步驟6。拆解如下。
商家服務(wù)器和支付寶服務(wù)器交互的過(guò)程中傳輸?shù)男畔惓C舾?,所以,在交互時(shí)必須防止中間人對(duì)于信息的篡改。例如步驟2將商品的金額改為0,支付寶就誤認(rèn)為是轉(zhuǎn)賬0元。
數(shù)字簽名解決了交互時(shí)這一安全問(wèn)題。它可以驗(yàn)證一條消息或者文檔的真實(shí)性。在支付寶支付的接口中,有一個(gè)sign
參數(shù)用來(lái)填寫(xiě)簽名。這個(gè)簽名作用是為了防止信息偽造。通過(guò)這種方式可以有效的防止消息在傳遞過(guò)程中被篡改。
2.1 簽名原理
數(shù)字簽名是一個(gè)信息安全的保障,它的實(shí)現(xiàn)依賴于雙方系統(tǒng)的密鑰。
簽名過(guò)程如下:
計(jì)算希望簽名的文檔的散列。不論輸入文檔的長(zhǎng)度如何,輸出長(zhǎng)度總是固定的。比如,使用SHA256就是256位。
對(duì)結(jié)果散列和一些額外的元數(shù)據(jù)進(jìn)行編碼。比如,接收方需要知道你使用的散列算法,否則不能處理簽名。
使用私鑰加密編碼過(guò)的數(shù)據(jù),其結(jié)果就是簽名,可以追加到文檔中作為身份驗(yàn)證的依據(jù)。
驗(yàn)證簽名(驗(yàn)簽):
接收方接收文檔并使用相同的散列算法獨(dú)立計(jì)算文檔散列。
接著,她使用公鑰對(duì)消息進(jìn)行解密,將散列解碼出來(lái),再確認(rèn)使用的散列算法是否正確,解密出的散列是否與本地計(jì)算的相同。
2.2 非對(duì)稱加密
支付寶采用RSA非對(duì)稱加密對(duì)信息進(jìn)行簽名。
非對(duì)稱加密是由一個(gè)公鑰和一個(gè)私鑰組成,一般代碼中命名為public key
和private key
。非對(duì)稱加密的特點(diǎn)是:私鑰加密的信息只有公鑰才能解密,公鑰加密的信息只能有私鑰才能解密。
一般會(huì)將私鑰進(jìn)行保留,開(kāi)發(fā)時(shí)一般會(huì)放在配置文件中,安全級(jí)別和數(shù)據(jù)庫(kù)賬號(hào)密碼一樣。公鑰會(huì)交給其它系統(tǒng),這樣系統(tǒng)間交互時(shí)中間人不知道密鑰的情況下,是無(wú)法破解交互的信息的。發(fā)送方只要保證私鑰不泄露,任何人發(fā)送給接收方的信息在簽名驗(yàn)證時(shí)都無(wú)法匹配成功。
支付寶的實(shí)現(xiàn)簽名的方式也大致如此,支付寶在信息交互的時(shí)候兩個(gè)很重要的名詞支付寶公鑰
和應(yīng)用公鑰
,這兩個(gè)秘鑰總是讓人混淆。這是因?yàn)橹Ц秾毺峁┝藘商識(shí)SA加密。一套是用來(lái)保證步驟2
統(tǒng)一下單接口時(shí)的信息安全,另一套是用來(lái)保證步驟6
回調(diào)時(shí)的信息安全。
如下圖,步驟2商戶服務(wù)器通過(guò)紅色應(yīng)用私鑰(priv key 2
)計(jì)算簽名,支付寶通過(guò)紅色應(yīng)用公鑰(pub key 2
)進(jìn)行驗(yàn)簽;步驟6支付寶服務(wù)器通過(guò)藍(lán)色支付寶私鑰(priv key 6
)計(jì)算簽名,商家通過(guò)藍(lán)色支付寶公鑰(pub key 6
)驗(yàn)證簽名。
如上圖,說(shuō)明使用RSA2
加密方式,HASH
算法采用SHA256
。進(jìn)入設(shè)置之后要設(shè)置應(yīng)用公鑰
和保存支付寶公鑰
。
應(yīng)用公鑰和應(yīng)用私鑰 這兩個(gè)需要自己生成一對(duì),保證步驟2的安全。生成方式跳轉(zhuǎn)支付寶開(kāi)放平臺(tái)開(kāi)發(fā)助手
支付寶公鑰和支付寶私鑰是支付寶提供的,私鑰支付寶自己保留的,和自己服務(wù)器的應(yīng)用私鑰一樣,人家不會(huì)提供出來(lái)。公鑰復(fù)制下來(lái)用于在回調(diào)時(shí)進(jìn)行簽名的認(rèn)證。
簽名雖然可以防止中間人的信息篡改,但是無(wú)法防止中間人信息查看。比如步驟2中,向支付寶發(fā)送的商品金額,中間人即可獲取每天中該商家交易的金額。信息在網(wǎng)絡(luò)中傳輸感覺(jué)是一個(gè)虛無(wú)縹緲的過(guò)程,網(wǎng)絡(luò)中信息有可能被不法分子進(jìn)行攔截。
因此在支付的過(guò)程中,會(huì)推薦使用https
協(xié)議進(jìn)行交互,使得交互的信息加密傳輸。而且,支付寶的很多接口還支持使用AES
加密之后進(jìn)行傳輸,使得信息更加安全。
AES加密是一種對(duì)稱加密算法,對(duì)稱加密算法相對(duì)于非對(duì)稱加密要簡(jiǎn)單一點(diǎn)。系統(tǒng)間只存在一個(gè)密鑰,這個(gè)密鑰可以用來(lái)加密也可以用來(lái)解密。
在與支付寶交互的信息可以通過(guò)AES加密。防止信息的泄露,官方對(duì)接口的解釋如下:
若 OpenAPI 無(wú) bizContent 傳參則無(wú)法使用 AES 密鑰加密,否則會(huì)報(bào)錯(cuò) 當(dāng)前 API 不支持加密請(qǐng)求。例如:alipay.user.info.share(支付寶會(huì)員授權(quán)信息查詢接口)未使用 bizContent 傳參則無(wú)法使用 AES 密鑰加密。
AES 密鑰是對(duì)接口請(qǐng)求和響應(yīng)內(nèi)容進(jìn)行加密,密文無(wú)法被第三方識(shí)別,從而防止接口傳輸數(shù)據(jù)泄露。
RSA 密鑰是對(duì)接口請(qǐng)求和響應(yīng)內(nèi)容進(jìn)行簽名,開(kāi)發(fā)者和支付寶開(kāi)放平臺(tái)分別加簽驗(yàn)簽,以確認(rèn)接口傳輸?shù)膬?nèi)容沒(méi)有被篡改。不論接口內(nèi)容是明文還是密文,RSA 均可正常簽名。
開(kāi)發(fā)者可對(duì)請(qǐng)求參數(shù)先做 AES 加密,然后對(duì)密文進(jìn)行 RSA 簽名。
感謝各位的閱讀,以上就是“支付寶支付加密規(guī)則是怎么樣的”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)支付寶支付加密規(guī)則是怎么樣的這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。