JWT算法对比测试

Posted langshiquan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于JWT算法对比测试的主要内容,如果未能解决你的问题,请参考以下文章

Oracle RMAN各类压缩算法对比测试

Oracle RMAN各类压缩算法对比测试

JWT( JSON Web Token )的 实践,以及与 Session 对比

R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型并评估模型在测试集和训练集上的分类效果(accurayF1偏差Deviance):Bagging算法与随机森林对比

Hash算法效率简单对比(md5,sha1,sha256)

人工智能基于八数码问题对比搜索算法的性能