Hallo ik heb een soort inlog systeem gebouwd.

Mensen krijgen een brief thuis met een unieke code en kunnen inloggen op mijn pagina met die unieke code.

Alleen kan ik geen goede manier vinden om een unieke code te genereren.
MD5 en SHA1 zijn te lang.

Ik zou het liefste die unieke code willen genereren aan de hand van een string die ik opgeef(net zoals bv bij md5).

Is er een manier om MD5 of SHA1 met een maximale lengte van de code.


Alvast bedankt!
Te lang...??

substr(md5(.....), 1, 5);
Wat je kan doen is een MD5 hash maken en daarvan een substr te gebruiken.

Andere optie is om een 'password generator' te downloaden en deze een string van x tekens te laten genereren. Als je dan bijhoudt welke codes er al gebruikt zijn (array oid) kan je unieke codes maken.
gewoon beetje werken met [php]rand[/php] of je neemt je [php]session_id[/php]
Hipska schreef op 20.11.2007 09:49
gewoon beetje werken met [php]rand[/php] of je neemt je [php]session_id[/php]

[php]session_id[/php] kan niet want die code moet al vooraf gegenereerd zijn en iemand moet het over typen.

<?php
$str = "Informatie";
$code = substr(md5($str), 1, 6);
?>

werkt eigenlijk goed

maar kan ik dan de originele $str weer terug krijgen vanuit $code die is gegenereerd?
Dat is niet mogelijk, je kunt alleen de ingevoerde code vergelijken door die net zo te coderen.
MD5 is net als SHA1 een hash. Een hash is niet te decoderen.
TJVB schreef op 20.11.2007 11:36
Dat is niet mogelijk, je kunt alleen de ingevoerde code vergelijken door die net zo te coderen.
MD5 is net als SHA1 een hash. Een hash is niet te decoderen.

En helemaal niet meer als je dan een afgekapte hash hebt.

<?php
$code = "";
$i = 0;
while($i<rand(6,8))
{
$code .= chr(rand(35,123));
$i++;
}

print($code);
?>

deze gebruik ik zelf voor een unieke code :) ken er natuurlijk ook nog een timestamp en een hash overheen gooien dan weet je zeker dat ie uniek is (hangt natuurlijk ook van de hoeveelheid af).
1 is uniek, 2 is uniek, 3 is uniek, 4 uniek, en zo kan ik nog wel even doorgaan...

Het is een kwestie van kolom in een databasetabel aanmaken en daar een UNIQUE opzetten. Wat je vervolgens in die kolom gaat wegschrijven, dat mag je zelf weten. Dat het een unieke waarde is, die garantie heb je, het is tevens de enige mogelijkheid om een unieke waarde te genereren. Je moet tenslotte weten welke waardes je in het verleden al hebt gebruikt.

md5, sha1 en andere hashingmethodes hebben hier niks mee te maken, die leveren geen unieke gegevens op.

Reageren