Astetta vahvempaa tiivistystä. Toiminta on selitetty tarkemmin kommenteissa. Testailla voit osoitteessa: http://dh.suncomet.org/hash/
<?php
/*
~ DHash ~ Kirjoittanut: d-hunter ~
Funktiolla on mahdollista luoda eri pituisia tiivisteitä annetusta merkkijonosta.
Tiivisteen pituus on käytännössä rinnastettavissa sen vahvuuteen, joten funk-
tion avulla on periaatteessa mahdollista luoda tiivisteitä, jotka ovat realis-
tiselta kannalta ajateltuna mahdottomia purkaa.
Käyttö:
dhash( merkkijono [, vahvuus ] )
Palautettavat arvot:
tiiviste ($out)
*/
function dhash ($pas, $str = "32") {
// Jos vahvuus on suurempi kuin merkkijonon pituus, täytetään ylimääräiset paikat luvuilla
if(strlen($pas) < $str)
{
//Lasketaan tarvittavien lukujen määrä
$numbam = $str - strlen($pas);
// Kieputetaan silmukalla lukuja merkkijonon perään tarvittava määrä
for($o = 0; $o < $numbam; $o++)
{
$pas = $pas . $o;
}
}
// Pääsilmukka, joka luo itse tiivisteen
for($i = 0; $i < $str; $i++)
{
// Lopulliseen tiivisteeseen lisätään merkkijonoja vaihe vaihteelta. Tyylinä toimii: t-te-tes-testi.
$has = substr($pas, 0, $i);
$out .= sha1(sha1($pas . $str) . strlen($pas) . md5($has));
}
// Palautetaan $out
return $out;
// Siivotaan funktiot bittiavaruuteen
unset($numb, $i, $has, $out, $str, $numbam);
}
/*
~ DCheckHash ~ Kirjoittanut: d-hunter ~
Funktion avulla on mahdollista verrata tiivistettä alkuperäiseen merk-
kijonoon. Funktio laskee ensin tiivisteen pituudesta sen vah-
vuuden, jonka jälkeen se vertaa sitä toiseen tiivisteeseen.
Tiivistelmien täsmätessä palauttaa true-arvon, muutoin false-
arvon.
Käyttö:
dcheckhash ( merkkijono , tiivistelmä )
Palautettavat arvot:
true, false
*/
function dcheckhash ($pass,$hash) {
// Lasketaan tiivisteen vahvuus
$str = strlen($hash) / 40;
// Verrataan tiivisteitä ja palautetaan sopivat arvot
if($hash == dhash($pass, $str))
{
return true;
}
else
{
return false;
}
}
?>Aihe on jo aika vanha, joten et voi enää vastata siihen.