hmac 密钥和盐长度

发布于 2024-11-05 19:46:33 字数 359 浏览 0 评论 0原文

我正在使用 hmac sha1 对传递给第三方服务的用户 ID 进行签名。 所有用户都使用相同的秘密,并且每个用户的盐都是唯一的。

token = userid : timestamp+2hours : hmac(userid : timestamp+2hours, salt+secret)
token_hex = hex(hash)

hmac 适用于短字符串吗? userid:timestamp 可以是例如 12:1304985212 盐和秘密的顺序重要吗? (盐+秘密与秘密+盐) 共享秘密长度应该是多少,盐长度应该是多少? 我可以使用相同的密钥来签署服务器和远程服务之间的消息,还是生成单独的密钥更好?

谢谢

I'm using hmac sha1 to sign a userid which is passed to a third party service.
The same secret is used for all users and the salt is unique for each user.

token = userid : timestamp+2hours : hmac(userid : timestamp+2hours, salt+secret)
token_hex = hex(hash)

Will hmac work for short strings? userid:timestamp can be for example 12:1304985212
Does the order of salt and secret matters? (salt+secret vs secret+salt)
What should be the shared secret length and what should be the salt length?
Can I use the same secret to also sign messages between the server and the remote service or is it better to generate a separate secret?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

橙味迷妹 2024-11-12 19:46:33

您应该计算hmac(salt:userid:timestamp+2hours,secret)并传输salt:userid:timestamp+2hours:散列。
这里加盐的目的是使明文更长并且不重复,因此最好将其附加到明文中,而不是秘密的。

如果你真的想更改秘密,请执行 hmac(userid : timestamp+2hours, hash(salt : Secret)),它会使一次性秘密看起来更像随机数。

You should calculate hmac(salt : userid : timestamp+2hours, secret) and transmit salt : userid : timestamp+2hours : hash.
Purpose of salt here is to make plaintext longer and not repeating, so it better be appended to plaintext, not secret.

If you really want to change secret, do hmac(userid : timestamp+2hours, hash(salt : secret)), it will make one-time secret look more like random number.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文