Encryption 如何生成用于JWT的HS512密钥

Encryption 如何生成用于JWT的HS512密钥,encryption,elixir,jwt,Encryption,Elixir,Jwt,我正在使用Elixir/Phoenix应用程序实现JWT身份验证。我使用的是HS512算法。我需要一把钥匙。除了必须为512位或更长之外,此密钥是否有其他条件?它可以是任意字符串,对吗?我很有信心任意字符串都可以工作。最佳做法是将该字符串存储在环境变量中,然后让您的应用程序从中提取。您需要在安装了OpenSSL库的Linux计算机上运行此命令: echo-n“somevalue”| openssl sha512-hmac“somekey” 此命令的输出是HS512(HMAC SHA512),您可

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

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

您需要在安装了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
OpenSSL生成129字节的秘密((172*6)/8)。129字节适用于HS512(请参阅)


tr删除新行。

如果现在有人访问此网站:卫报为此添加了一个混合任务

mix guardian.gen.secret


该命令仅使用消息的签名键
somekey
生成HMAC512。结果是
somevalue
的HMAC,不应用作签名密钥。
openssl rand -base64 172 | tr -d '\n'