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.