Hallo allemaal,

Ik zoek een script dat een unieke code maakt, die bestaat uit drie letters gevolgd door 3 cijfers, bijvoorbeeld ABC123 of ACB123 e.d.
Maar die code mag nog niet voorkomen in de database!
Dus als code ABC123 al bestaat, moet hij een ándere unieke code verzinnen.
Als die óók al bestaat moet hij wéér een andere code bedenken enzovoort enzovoort...

Wie kan mij helpen?

Hellolo.
Dat kan ook jah... Alleen, als de code als activatie-code moet dienen, zou ik het wel zo doen:

<?php
$username = "Jip";
$password = "007pass"; // voorbeeld...

$codeuser = md5(sha1($username));
$codepass = md5(sha1($password));

echo $codeuser.$codepass;
?>

@ Jip: wat is de reden voor zowel sha1 als md5?
Voor mijn ledensystemen gebruik doe ik meestal

<?php
$hash md5($gebruiker.$_SERVER['REMOTE_ADDR']); // In $gebruiker staat dan de gebruikersnaam
echo $unieke_code = substr($hash, 0, 6);
?>
Het zou kunnen dat de mail wordt onderschept en er een scriptkiddie denkt: "Hey, laat ik mijn brute-force programma er 's op los". Dan kan het wachtwoord gevonden worden. Daarom codeer ik wachtwoorden ook altijd twee keer met md5.
Laten we dus zeggen, gewoon wat extra beveiliging.
@ Hellolo: dat is natuurlijk ook geen waterdichte methode voor een unieke code. Je hebt dan 16777216 mogelijkheden en dat is voor de meeste systemen wel genoeg ;-)

@ Jip: ik wist niet dat er programma's waren die md5 konden kraken?
Ik kwam een programma tegen (dacht dat het iets van Cain heette) en die probeerde net zolang md5() hashes uit totdat hij er een had gevonden die hetzelfde was als de ge-md5()de hash die je invoerde.

md5() is niet te kraken, omdat het gaat met berekeningen, afrondingen e.d., dus wellicht zijn er 2 wachtwoorden die hetzelfde resultaat weergeven als ze ge-md5()t zijn.
Hellolo schreef op 23.10.2005 13:07
Ik kwam een programma tegen (dacht dat het iets van Cain heette) en die probeerde net zolang md5() hashes uit totdat hij er een had gevonden die hetzelfde was als de ge-md5()de hash die je invoerde.


Ja, dat is inderdaad brute-force. Dan kraak je dus niet het md5 algoritme zèlf, maar je voert een functie net zo lang verschillende waarden tot je hetzelfde resultaat hebt. Dan ben je volgens mij toch wel een tijdje bezig, want een string van 32 hexadecimale tekens heeft 3,4028236692093846346337460743177e+38 mogelijkheden ;-)
Daarom is de amerikaanse regering ook finansier aan verschillende onderzoekers die onderzoek doen naar de quantum computer. Die zou in theorie al die mogelijkheden niet een voor een af hoeven te gaan, maar ze allemaal tegelijkertijd kunnen beredeneren.

Maar tot nu toe zijn ze nog bezig met het in bedwang houden van 1 'bit' (quantumdeeltje), dus daar gaat nog een paar jaar overheen :)
Ik denk dat je eerste idee van "Code-maken -> kijken of hij niet al bestaat -> ja/nee -> nog een keer wel het netste is. Als het te langszaam wordt gebruik je te weinig karakters en is de kans te groot dat er een code gemaakt wordt die al bestaat.

Een md5() van de datetime zou natuurlijk ook kunnen volstaan.
@Jan Koehoorn:
Op http://www.sitemasters.be had ik een scriptje gevonden dat woorden kan ontcijferen die md5-gecodeerd zijn. Ik heb dit scriptje aangepast, en hier kun je zien wat het doet. Het duurt wel land, maar neem bijvoorbeeld het woordje "en". Wedden dat hij het terugcodeerd..?

--edit--
Hij kan woorden van vier letters en korter alleen ontcijferen.

Reageren