HMAC 256与HMAC 512 JWT签名加密

13

HS256和HS512加密算法之间是否存在实际差异?或者说,相较于已经无法破解的密钥,更长的密钥所提供的额外安全性是否是多余的?在加密JWT令牌时应该使用哪一个?

使用auth0的Java JWT库是否可以使用HS512加密?

2个回答

15
该算法用于对令牌的头部和有效负载执行数字签名(不是加密)。如果您想加密令牌有效负载,您需要应用JWE标准(请参见RFC)。
“HS256”表示HMAC-SHA256。与HS512的区别在于哈希方法本身的强度。您可以查看keylength.com网站和这个answer。您将看到即使SHA-256也具有相当大的安全余量。此外,HMAC算法对底层哈希算法的攻击几乎没有感知。因此,您甚至可以安全地使用HMAC-SHA1。
能否使用HS512加密与auth0的Java JWT?
我看了一下代码,虽然没有文档说明,但是可能是可行的。使用类似于以下的东西即可:
JWTSigner.Options options = new JWTSigner.Options();
options.setAlgorithm(Algorithm.HS512);
jwtSigner.sign(claims, options);

0
这是关于编程的内容,返回翻译文本:

在auth0的java JWT中使用HS512加密是否可行?

你可以尝试像这样做:

Jwts.builder()
    .setSubject(username)
    .setIssuedAt(new Date())
    .setExpiration(new Date((new Date()).getTime() + jwtExpirationMs))
    .signWith(SignatureAlgorithm.HS512, jwtSecret)
    .compact();

这个例子是从这里获取的:链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接