JWT算法對比測試


業務背景:

項目在解決臨時權限的問題,欲引入JWT,故評估對比JWT實現方式之一JWS(RFC文檔)的相關簽名算法(由JWA規定),指導簽名算法選擇。

測試代碼:

https://github.com/z521598/jwt-compare

性能測試:

測試環境:

操作系統:Mac OS
內存:8GB
CPU core: 2
本地測試只做性能縱向對比,具體耗時取決於具體運行環境

測試結果:

算法 循環次數 總耗時(ms) 平均耗時(ms)
對稱
HS256 10000 2142 0.21
HS384 10000 2492 0.24
HS512 10000 2153 0.21
HS256 100000 5964 0.059
HS384 100000 5368 0.053
HS512 100000 5210 0.052
非對稱 RSA
RS256 10000 30342 3.03
RS384 10000 88314 8.83
RS512 10000 196748 19.67
RS256 100000 285911 2.85
RS384 100000 858241 8.58
RS512 100000 1861344 18.61
非對稱 ECDSA
ES256 10000 32375 3.23
ES384 10000 64646 6.46
ES512 10000 86273 8.62
ES256 100000 285097 2.85
ES384 100000 667266 6.67
ES512 100000 764695 7.64

測試結論:

  1. 對稱加密性能由於非對稱加密
  2. RS256 RS284 RS512 簽名驗簽時間依次遞增,強度依次增大,ES256 ES384 ES512 同理
  3. ES系列算法 加密時間要小於 RS系列算法

長度測試:

測試數據有效長度:

61個字符串

測試結果:

算法 header+body長度 總長度 簽名長度
HS256 193 236 43
RS256 193 535 342
ES256 193 279 86

header+body長度不變,因為都是base64編碼;相同的簽名算法,無論加密多大的數據的簽名長度都是一致的。

測試結論:

  1. 對稱加密簽名長度要小於非對稱加密簽名長度
  2. RS系列算法簽名長度要遠大於ES系列簽名算法

最終選擇:

ES256


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM