为什么要散列(不使用盐)随机数?

2024-10-02 02:26:05 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码片段是用php编写的,但是我见过其他web编程语言的开发人员散列随机数。在

if ($loginValid=='yes') {
    $token = sha256(generateRandomNumber());
    $_SESSION["token"] = $token;
    $_SESSION["userid"] = $id;
    setcookie("authenticationtoken", $token, ...)
}

sha256是一个加密哈希函数。因为它不使用salt,无论你给它什么输入,输出都是一样的。试试看:

http://www.xorbin.com/tools/sha256-hash-calculator

在什么情况下,散列(不使用salt)是一种被认为是良好做法的随机数?在


Tags: 代码tokenwebidif开发人员session编程语言
2条回答

我的猜测是,这只是一种简单的方法,可以获得一个已知大小的散列值,与generateRandomNumber()返回的大小无关。显然,如果generateRandomNumber()的范围很小,这也会反映在返回的不同哈希数中。在

假设generaterDomainNumber没有随机种子,即它是一个真正加密安全的随机数,则不需要salt。请记住,salt的目的是确保如果对哈希函数使用相同的输入,它将返回两个不同的结果。在

如果token只需要作为传递给客户机的秘密,那么对这个散列进行salt将不会有真正的帮助。在

作为参考,您可以在密码哈希上使用salt。而不是存储用户密码,而是存储它的哈希值,这样如果数据库被穿透,没有人可以窃取用户的密码。但是,您不希望使用相同密码的用户获得相同的哈希值,因此在对密码进行哈希运算之前,您需要在密码中添加一个salt,以确保即使两个用户拥有相同的密码,也应该获得不同的哈希值。在

相关问题 更多 >

    热门问题