RSA和RSA2簽名算法
什麼是數字簽名?
一個很好的說明文檔可以參考:
What is a Digital Signature? ,中文翻譯可以參考: 數字簽名是什麼?.
簡單來說,簽名主要包含兩個過程:摘要和非對稱加密,首先對需要簽名的資料做摘要(類似于常見的MD5)後得到摘要結果,然後通過簽名者的私鑰對摘要結果進行非對稱加密即可得到簽名結果。
開放平台支援的簽名算法
RSA2(SHA256WithRSA):(強烈推薦使用),強制要求RSA密鑰的長度至少為2048.
RSA(SHA1WithRSA):對RSA密鑰的長度不限制,推薦使用2048位以上
由于計算能力的飛速發展,從安全性角度考慮,螞蟻金服在原來SHA1WithRSA簽名算法的基礎上,新增了支援SHA256WithRSA的簽名算法。該算法在摘要算法上比SHA1WithRSA有更強的安全能力。
SHA1WithRSA的簽名算法會繼續提供支援,但為了您的應用安全,強烈建議使用SHA256WithRSA的簽名算法。
注意事項
-
協定參數
開放平台的封包标準中,sign_type參數用于指定簽名算法,若使用SHA256WithRSA簽名算法則在封包中需要指定sign_type=RSA2,若您使用開放平台SDK,可參考SDK相關文檔說明:
[url]https://docs.open.alipay.com/291/105974[/url] -
避免公私鑰混用
不同簽名算法的簽名密鑰是隔離的。由于同時提供了兩套簽名算法,若選擇了特定的簽名算法,請保證使用對應的私鑰簽名,同時使用對應的支付寶公鑰進行驗簽。