支付中常見的加密算法

網(wǎng)絡(luò)支付是目前十分常見的支付方式,而支付是一個安全等級非常高的場景,各個系統(tǒng)之間相互交錯,每一條數(shù)據(jù)出現(xiàn)泄露都可能會造成極其重大的損失,所以加密算法在支付中一直充當(dāng)著重要的角色。下面我們就來了解一下支付中那些常見的加密算法。

支付中的常見加密算法

RSA加密算法

RSA是一種非對稱加密算法,可以在不傳遞密鑰的情況下完成解密,避免了對稱加密直接傳遞密鑰所造成的被破解的風(fēng)險。RSA加密/解密由一對密鑰(公鑰和私鑰)共同完成,公鑰是公開的,用來加密,私鑰是保密的,用來解密。兩者之間通過一定的算法關(guān)聯(lián),最核心的思想是利用對一極大整數(shù)做因數(shù)分解的困難性來保證安全性。

假設(shè)甲是支付機(jī)構(gòu),乙是支付機(jī)構(gòu)的商戶,甲乙之間需要進(jìn)行數(shù)據(jù)的傳輸。如果要對數(shù)據(jù)進(jìn)行加密/解密,則需要先生成密鑰。甲生成一對密鑰(公鑰和私鑰),公鑰給乙,私鑰自己保留。同樣乙也生成一對公鑰和私鑰,公鑰給甲,私鑰自己保留。

RSA加密算法

有了密鑰之后,就可以對傳輸?shù)臄?shù)據(jù)進(jìn)行加密了。數(shù)據(jù)傳輸是雙向的,所以支付行業(yè)傳輸數(shù)據(jù)的加密/解密也是雙向的,具體步驟如下:

  1. 乙使用甲的公鑰加密要傳輸?shù)臄?shù)據(jù),并把數(shù)據(jù)上送給甲。
  2. 甲接收數(shù)據(jù),使用自己的私鑰解密。
  3. 甲將處理后的結(jié)果數(shù)據(jù)使用乙的公鑰加密,并返回給乙。
  4. 乙接收返回的數(shù)據(jù),并使用自己的私鑰解密。

以上步驟是一個支付機(jī)構(gòu)比較標(biāo)準(zhǔn)的加密/解密流程。甲乙雙方分別使用對方的公鑰加密,使用自己的私鑰解密。

RSA加密算法

AES加密算法

AES是一種經(jīng)典的對稱加密/解密算法,使用加密函數(shù)和密鑰來完成對明文的加密,然后使用相同的密鑰和對應(yīng)的函數(shù)來完成解密。AES的優(yōu)點(diǎn)在于效率非常高,相比RSA要高得多。

AES加密算法

AES的加密和解密需要借助密鑰,密鑰是提前生成的,支付機(jī)構(gòu)根據(jù)一定的規(guī)則生成密鑰之后,傳輸給商戶,商戶上送數(shù)據(jù)需要使用密鑰進(jìn)行加密,支付機(jī)構(gòu)收到密文之后使用相同的密鑰進(jìn)行解密。

AES和RSA的關(guān)系

在支付領(lǐng)域,考慮到對安全性和高效性的要求,通常不會只采用一種加密算法,而是采用多種加密算法組合加密的方式。

RSA加密算法雖然安全,但是計算量非常大,效率比較低,在高并發(fā)的情況下會面臨嚴(yán)重的性能問題。

AES加密的密鑰key在網(wǎng)絡(luò)傳輸中有被攔截的風(fēng)險,存在很大的安全隱患。

AES和RSA的關(guān)系

所以通常的辦法是使用AES密鑰對接口請求和響應(yīng)內(nèi)容進(jìn)行加密,密文無法被第三方識別,從而防止接口傳輸數(shù)據(jù)泄露。使用RSA密鑰對接口請求和響應(yīng)內(nèi)容進(jìn)行簽名,以確認(rèn)接口傳輸?shù)膬?nèi)容沒有被篡改。不論接口內(nèi)容是明文還是密文,RSA均可正常簽名。

免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪稿。