如何生成与JWT一起使用的HS512密钥



我正在使用Guardian通过Elixir/Phoenix应用程序实现JWT身份验证。我使用的是HS512算法。我需要一把钥匙。这个密钥除了必须是512位或更长之外,还有什么条件吗?它可以是任意字符串,对吧?

openssl rand -base64 172 | tr -d 'n'

OpenSSL生成一个129字节((172*6)/8)的秘密。129字节适用于HS512(请参阅https://github.com/ueberauth/guardian/issues/152)。

tr删除换行符。

您需要在安装了OpenSSL库的Linux机器上运行此命令:

echo -n "somevalue" | openssl sha512 -hmac "somekey"

该命令的输出是HS512(HMAC SHA512),您可以将其用作任何JWT库的签名密钥。

签名密钥是一个任意值或长度的字节数组。大多数JWT库允许您使用任何字符串作为键,该键将转换为字节数组。

为了生成一个安全的20字节密钥,bs64编码的

dd if=/dev/random bs=20 count=1 status=none | base64

如果现在有人访问这个:Guardian为此添加了一个混合任务。

mix guardian.gen.secret

https://hexdocs.pm/guardian/Mix.Tasks.Guardian.Gen.Secret.html#content

我非常相信任何任意字符串都能工作。最佳做法是将该字符串存储在环境变量中,然后让您的应用程序从中提取。

相关内容

  • 没有找到相关文章

最新更新