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

问题描述 投票:0回答:5

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

encryption elixir jwt
5个回答
33
投票
openssl rand -base64 129 | tr -d '\n'

OpenSSL 生成 129 字节的秘密。 129 字节适合 HS512(请参阅 https://github.com/ueberauth/guardian/issues/152)。

tr 删除换行符。


2
投票

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

生成安全的 20 字节密钥,bs64 编码

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

1
投票

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

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

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


1
投票

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

mix guardian.gen.secret

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.