如果我知道加密功能,则解密密码

时间:2013-04-07 08:11:25

标签: php codeigniter encryption

我正在使用Codeigniter开发系统! 我想知道的是,如果他/她知道我用来生成加密哈希的功能和步骤,有人可以找出密码是什么吗? 现在,我必须生成我的哈希字符串:

$pass = str_split($password, 2);
$hashPass = '';
foreach($pass as $p){
    $hashPass .= md5($p);
}

4 个答案:

答案 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选项 - 密码哈希不是尝试创建自己的东西。