gpt4 book ai didi

security - 生成 secret 时为什么要散列一个随机数?

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

很多代码都会做这样的事情来生成某种 secret :

sha1(random())

为什么不简单地使用一个随机数呢?我意识到在过去,一些操作系统随机生成器并不是那么好,但我不确定这是否仍然如此,即使是这样,sha1'ing 它如何让它变得更好?

最佳答案

我怀疑哈希函数最常被误用为编码函数。需要一定长度的字母数字代码,哈希提供这样的字符串。这很容易,而且看起来不可预测。

很容易忘记,md5(random()) 的随机部分不是 md5 的 32 个十六进制字符,而是只有与 一样多的可能结果>random() 函数提供。如果知道随机函数的工作原理,就可以预先计算出一系列可能的值。

代码会更随机(更好的熵),如果你真的使用操作系统的随机源,并请求尽可能多的字节。然后,您可以使用 base64_encode() 等函数对这些字节进行编码。对于 token ,base62 编码是理想的,因为它非常紧凑并且不会返回特殊字符,尽管实现起来有点困难。

回答您的问题:随机数会更好,但它必须是“真正”随机的。如果您将它用作只有“0”-“9”的字母数字,那么您的 token 会很长,可以使用编码功能将其缩短。

关于security - 生成 secret 时为什么要散列一个随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16225344/

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