TheREDHaired.Ru
Sape, SEO, Траф , Солим хэш
13th
Ноя
Солим хэш
Автор: admin | Рубрика: Безопасность

Солим Хэш
И так, для чего именно нужно “Солить хэш” это пусть каждый решает в меру своей собственной параноидальности.
Вот моя наработка в этой области, которую включил в будущую CMS:
Схема проста, берется 2 рандомные соли в диапазоне от 1 до 100 и посыпаются при варки Хэша. Получаеться, что система производит мини брут хэша равный 10 000 комбинаций при сверке хэша (можно задать и больше, но это будет влиять на производительность).
Использование:
<?
/*
* include 'auth.class.php';
* $PWD = new Password();
* print $PWD->GenOrCheckHash('Yourpassword'); // Function returns HASH
* print $PWD->GenOrCheckHash('Yourpassword','YourHASH'); // Function returns SALT values
*/
class Password {
function GenOrCheckHash($pass,$hash = false){
// PHP VERSION 4 OR 5 (3 doesnt support)
$v = floatval(phpversion());
if( $v >= 5 ){
if($hash == false){
return $this->GenHashPHP5($pass);
} else {
return $this->CheckPasswdPHP5($pass,$hash);
}
}
elseif( $v >= 4 && $v < 5 ) {
if($hash == false){
return $this->GenHashPHP4($pass);
} else {
return $this->CheckPasswdPHP4($pass,$hash);
}
}
}
// Gen PHP4 Hash using MD5() and SHA1()
function GenHashPHP4($pass){
$salt1=rand(1,100);
$salt2=rand(1,100);
return md5(sha1(md5($pass).md5($salt1)).sha1($salt2));
}
// Gen PHP5 Hash using whirlpool AND sha512
function GenHashPHP5($pass){
$salt1=rand(1,100);
$salt2=rand(1,100);
return hash('whirlpool',hash('whirlpool',hash('whirlpool',$pass).hash('sha512',$salt1)).hash('sha512',$salt2));
}
// CheckPasswordPHP4 using double FOR salt
function CheckPasswdPHP4($pass,$hash){
for($i1=1;$i1<=100;$i1++){
for($i2=1;$i2<=100;$i2++){
$gen_hash=md5(sha1(md5($pass).md5($i1)).sha1($i2));
if($gen_hash == $hash){
return "Found with salt ".$i1." and ".$i2." ";
}
}
}
}
// CheckPasswordPHP5 using double FOR salt
function CheckPasswdPHP5($pass,$hash){
for($i1=1;$i1<=100;$i1++){
for($i2=1;$i2<=100;$i2++){
$gen_hash=hash('whirlpool',hash('whirlpool',hash('whirlpool',$pass).hash('sha512',$i1)).hash('sha512',$i2));
if($gen_hash == $hash){
return "Found with salt ".$i1." and ".$i2." ";
}
}
}
}
}
?>Не знаете, как правильно организовать локальную сеть дома или в офисе? Тогда ВСервере – монтаж компьютерных сетей для Вас!


