【问题标题】:How to generate a HS512 secret key to use with JWT如何生成与 JWT 一起使用的 HS512 密钥
【发布时间】:2019-10-15 15:56:45
【问题描述】:

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

【问题讨论】:

    标签: encryption elixir jwt


    【解决方案1】:
    openssl rand -base64 172 | tr -d '\n'
    

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

    tr 删除换行符。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 该命令只是使用签名密钥somekey 为消息somevalue 生成HMAC512。结果是somevalue 的 HMAC,不应用作签名密钥。
      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        mix guardian.gen.secret

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2019-01-22
            • 2017-11-05
            • 2017-10-15
            • 2021-01-06
            • 2018-12-21
            • 2018-03-27
            • 2017-07-30
            • 2020-12-27
            • 1970-01-01
            相关资源
            最近更新 更多