HMAC 256 与 HMAC 512 JWT 签名加密
Posted
技术标签:
【中文标题】HMAC 256 与 HMAC 512 JWT 签名加密【英文标题】:HMAC 256 vs HMAC 512 JWT signature encryption 【发布时间】:2016-11-23 04:45:30 【问题描述】:HS256 和 HS512 加密算法之间是否存在实际差异,或者与已经牢不可破的密钥相比,较长密钥的额外安全性是多余的?我应该使用哪一个来加密 JWT 令牌?
是否甚至可以使用带有 auth0 的 java JWT 的 HS512 加密?
【问题讨论】:
【参考方案1】:该算法用于对令牌的标头和有效负载执行数字签名(不是加密)。如果要加密令牌有效负载,则需要应用 JWE 标准(请参阅RFC)
HS256 和 HS512 加密算法之间是否存在实际差异,或者与已经牢不可破的密钥相比,较长密钥的额外安全性是多余的?我应该使用哪一个来加密 JWT 令牌?
HS256 表示 HMAC-SHA256。与 HS512 的区别在于哈希方法本身的强度。您可以查看keylength.com 网站和answer。你会看到,即使是 SHA-256 也有相当大的安全余量。更重要的是,HMAC 算法几乎没有受到对底层哈希算法的攻击。所以即使你也可以安全地使用 HMAC-SHA1。
是否可以通过 auth0 的 java JWT 使用 HS512 加密?
我查看了代码,这是可能的(但没有记录)。使用类似于
JWTSigner.Options options = new JWTSigner.Options();
options.setAlgorithm(Algorithm.HS512);
jwtSigner.sign(claims, options);
【讨论】:
以上是关于HMAC 256 与 HMAC 512 JWT 签名加密的主要内容,如果未能解决你的问题,请参考以下文章