我正在使用 Adam Griffiths 的 CodeIgniter 身份验证库,并且正在调整用户模型。
我遇到了一个他用来生成令牌的生成函数。
他首选的方法是从 random.org 引用一个值,但我认为这是多余的。我正在使用他随机生成 20 个字符长字符串的后备方法:
$length = 20;
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$token = '';
for ($i = 0; $i < $length; $i++) {
$token .= $characters[mt_rand(0, strlen($characters)-1)];
}
然后他使用盐对这个令牌进行哈希处理(我正在组合来自不同函数的代码)
sha1($this->CI->config->item('encryption_key').$str);
我想知道是否有任何理由通过加盐哈希运行令牌?
我读过简单地随机生成字符串是制作随机密码的一种天真的方式,但是 sh1 哈希和盐是必要的吗?
注意:我从https://www.grc.com/passwords.htm获得了我的加密密钥(63 个随机字母数字)