gpt4 book ai didi

openssl - jwt.io 上的 "secret base64 encoded"是什么意思,我将如何用 `openssl dgst` 模拟它

转载 作者:行者123 更新时间:2023-12-03 14:02:41 24 4
gpt4 key购买 nike

我尝试从 jwt.io 和 openssl 获得相同的输出。只要我做不标记“ secret base64编码”,我可以把签名前的那部分,跑过去

echo -n "pasted data from jwt.io" | \
| openssl dgst -binary -sha512 -hmac abc \
| openssl enc -base64 -A;

我从 openssl 得到了与 jwt.io 显示的相同的签名(使用 HS512!)。

如果我单击“ secret base64 编码”,显然 jwt.io 上的签名会发生变化。现在我用 base64 编码 secret “abc”以获得“YWJj”并将其用作openssl的 secret ,如
echo -n "pasted data from jwt.io" | \
| openssl dgst -binary -sha512 -hmac YWJj \
| openssl enc -base64 -A;

这不会创建相同的签名,所以我可能误解了这个复选框。它到底是做什么的,我需要如何调用 openssl 来模拟它?

(我知道 base64 和 base64 url​​encode 之间存在差异,但这不应该对“abc”的编码产生影响。)

最佳答案

https://jwt.io 上的选项 secret base64 encoded 意味着您粘贴到输入字段中的 secret 是 base64 编码的,因此需要在应用之前对其进行解码。然后 jwt.io 做了这个额外的步骤来首先解码 secret 。

jwt.io 确实在两种情况下产生相同的哈希值:

  • secret = 'abc' 和 secret base64 encoded = 否或
  • secret = 'YWJj' 和 secret base64 encoded = 是,

  • 因此该部分工作正常并按预期运行。

    但是您的 OpenSSL 命令行完全相同,只是 key 不同。 OpenSSL 不知道您的编码并将它们视为不同的 key ,因此会产生不同的结果。

    我不知道有任何命令行开关会告诉 OpenSSL 将 key 视为编码 key 。

    关于openssl - jwt.io 上的 "secret base64 encoded"是什么意思,我将如何用 `openssl dgst` 模拟它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52387275/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com