我正在使用Codeigniter开发系统! 我想知道的是,如果他/她知道我用来生成加密哈希的功能和步骤,有人可以找出密码是什么吗? 现在,我必须生成我的哈希字符串:
$pass = str_split($password, 2);
$hashPass = '';
foreach($pass as $p){
$hashPass .= md5($p);
}
答案 0 :(得分:1)
您的哈希方法不是哈希值,而且非常糟糕。您必须哈希密码字符串!
这是两个非常简单的功能..
function hash_my_pass($password){
return generate_hash($password);
}
function generate_hash($password){
return hash('sha256', $password . substr($password, 1, 3));
# In this case I put to hash $password + some substr of the password..
# Its good when you hash pass to add something secret..
}
function check_password($password, $hashed_pass){
return generate_hash($password) == $hashed_pass;
}
$password = '123456789';
$hash = hash_my_pass($password);
echo $hash;#this hash you must keep at your DB.
#when user login just compare his pass with the hash from your DB
var_dump(check_password($password, $hash));
答案 1 :(得分:1)
老实说,如果您在2013年没有使用Bcrypt,那么密码将容易受到攻击。如果在“加密”方面有任何等级,那么你目前的成绩是相当低的等级。
我将CodeIgniter与Bcrypt一起使用class
然后你所要做的就是调用这个文件bcrypt.php,然后类名是:
class Bcrypt extends CI_Controller {............}
请记住,使用php 5.5>将支持新密码哈希函数,这将自动使用Bcrypt,直到出现更强大的方法。 Info here
祝你好运,并在一天结束时停止尝试推出自己的“加密/散列”算法/方法/灾难。这样做可能会使您的客户容易受到攻击。
答案 2 :(得分:0)
如果他们知道实际的加密方法,他们就会有一个简单的时间来加密它。
对于所有哈希,例如存在rainbow tables,这允许快速恢复密码。这就是哈希密码通常被腌制的原因。
另一方面, str_split
不是哈希函数,据我所知。
答案 3 :(得分:0)
查看Ion_auth http://benedmunds.com/ion_auth/并使用bcrypt选项 - 密码哈希不是尝试创建自己的东西。