介面呼叫新增RSA加解密、加簽驗籤的實現
阿新 • • 發佈:2022-05-25
原理
對外介面為了安全起見,需要進行相應的安全處理:主要是資料加密傳輸和身份認證。資料加密傳輸有對稱加密和非對稱加密兩種,為了更加安全起見採用非對稱加密比較好些,身份認證採用數字簽名可以實現。
非對稱加密缺點:RSA加解密速度慢、有最大長度要求。
方案一
僅採用非對稱加密
RSA對內容長度的要求可以通過分組加解密解決
參考:https://blog.csdn.net/draven1122/article/details/55212252
方案二
非對稱加密+對稱加密
具體流程
呼叫方
1.簽名生成:介面引數->摘要演算法(SHA)->引數摘要->非對稱加密(自己RSA私鑰)->簽名
2.內容(介面引數 + 簽名 ) -->對稱加密(AES)--> 內容密文
3.AES金鑰-->非對稱加密(對方RSA公鑰)--> AES金鑰密文
4. 內容密文(請求體)+AES金鑰密文(請求頭)-> 傳輸給接收方
接收方
1. 獲取AES金鑰密文-> 非對稱解密(自己RSA私鑰)->AES金鑰
2. 內容密文-> AES金鑰-> 內容明文
3. 計算簽名:內容裡的引數->摘要演算法(SHA)->引數摘要->非對稱加密(對方RSA公鑰)->簽名
4. 比較計算得到的簽名與傳遞過來的簽名是否一致,一致則驗籤通過,繼續執行介面
5. 返回值(加解密可選)
參考文章:
https://www.cnblogs.com/pcheng/p/9629621.html