Effektiv nøkkellengde (kryptering).
PHP er et veldig enkelt og kraftig språk som lar uerfarne utviklere lage kraftfulle applikasjoner. Men selv om det virker, betyr ikke det at det er sikkert.
For å kryptere data trenger man en nøkkel. Denne genereres ofte ut fra en hemmelighet, eller et passord. Dette gjøres for å få riktig lengde på nøkkelen, uansett lengden på passordet. I dokumentasjonen til mcrypt_module_open() er følgende kode brukt for å genere en nøkkel:
/* Create key */
$key = substr(md5('very secret key'), 0, $ks);
Ved første øyekast ser jo dette greit ut. Men realiteten er anderledes. md5() funksjonen returner som vi vet en 32 tegns streng med tegnene a-f og 0-9. Det er 16 tegn, som tilsvarer 4 bit. Det betyr at nøkkelen vår i er 4x32 bit, altså 128 bit. Hadde den vært i binær (255 forskjellige tegn, 8 bit) hadde den vært 8x32 som er 256 bit. Det betyr at den effektive lengen på nøkkelen er halvvert.
Her er en funksjon som løser dette problemet.
