我正在開發使用Codeigniter的系統! 我想知道的是,如果有人知道密碼是什麼,如果他知道我用來生成加密哈希的功能和步驟? 現在我必須生成我散列字符串是:解密密碼,如果我知道加密功能
$pass = str_split($password, 2);
$hashPass = '';
foreach($pass as $p){
$hashPass .= md5($p);
}
我正在開發使用Codeigniter的系統! 我想知道的是,如果有人知道密碼是什麼,如果他知道我用來生成加密哈希的功能和步驟? 現在我必須生成我散列字符串是:解密密碼,如果我知道加密功能
$pass = str_split($password, 2);
$hashPass = '';
foreach($pass as $p){
$hashPass .= md5($p);
}
如果他們知道的加密的實際方法,他們有一個easiert的時間來修改它。
對於所有哈希,例如存在rainbow tables,其允許快速恢復密碼。這就是爲什麼散列密碼通常會被鹽漬化的原因。
str_split
另一方面不是散列函數,據我所知。
你的散列方法不是散列和它非常糟糕的想法..你必須散列你的密碼字符串!
這裏是2種非常簡單功能的..
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));
看看Ion_auth http://benedmunds.com/ion_auth/和使用bcrypt選項 - 密碼哈希是不是嘗試創建自己。
我不確定你在這裏做什麼。您似乎只是將密碼的每個字符再次添加到字符串中? – 2013-04-07 08:13:08
是的,Pekka,有人擁有$ pass價值,他可以在知道這個哈希過程的情況下解密哈希值嗎? – goseo 2013-04-07 08:14:45
用一個體面的密碼哈希來恢復密碼的唯一方法是猜測。一個好的密碼哈希使猜測代價高昂。請參閱[如何安全地哈希密碼? on security.stackexchange](http://security.stackexchange.com/questions/211/how-to-securely-hash-passwords)以獲取密碼散列的介紹。你的計劃從良好的光年。 – CodesInChaos 2013-04-07 08:15:06