Unieke code, md5 is te lang

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

OMEGA_ReD

OMEGA_ReD

20/11/2007 09:35:00
Quote Anchor link
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!
 
PHP hulp

PHP hulp

20/11/2024 12:41:18
 
- SanThe -

- SanThe -

20/11/2007 09:37:00
Quote Anchor link
Te lang...??

substr(md5(.....), 1, 5);
 
Elwin - Fratsloos

Elwin - Fratsloos

20/11/2007 09:39:00
Quote Anchor link
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.
 
Hipska BE

Hipska BE

20/11/2007 09:49:00
Quote Anchor link
gewoon beetje werken met rand of je neemt je session_id
 
Gerben Jacobs

Gerben Jacobs

20/11/2007 10:37:00
 
OMEGA_ReD

OMEGA_ReD

20/11/2007 11:29:00
Quote Anchor link
Hipska schreef op 20.11.2007 09:49:
gewoon beetje werken met rand of je neemt je session_id

session_id kan niet want die code moet al vooraf gegenereerd zijn en iemand moet het over typen.
 
OMEGA_ReD

OMEGA_ReD

20/11/2007 11:32:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?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?
Gewijzigd op 01/01/1970 01:00:00 door OMEGA_ReD
 
TJVB tvb

TJVB tvb

20/11/2007 11:36:00
Quote Anchor link
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.
 
- SanThe -

- SanThe -

20/11/2007 11:45:00
Quote Anchor link
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.
 

20/11/2007 11:55:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?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).
 
Frank -

Frank -

20/11/2007 12:21:00
Quote Anchor link
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.
 
OMEGA_ReD

OMEGA_ReD

20/11/2007 12:53:00
Quote Anchor link
pgFrank schreef op 20.11.2007 12:21:
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.

hi bedankt voor je reactie!
heb het gevonden!

dus ik zou dan met md5 id's kunnen genereren en in die unique kolom kunnen zetten, als de tabel een andere waarde ergens vind die hetzelfde is krijg ik een melding??

thx!
Gewijzigd op 01/01/1970 01:00:00 door OMEGA_ReD
 
Joren de Wit

Joren de Wit

20/11/2007 12:57:00
Quote Anchor link
Als je een waarde in probeert te voeren die al bestaat, krijg je inderdaad een foutmelding. Met mysql_errno() kun je controleren welke foutcode je terug krijgt en als dat 1062 is, weet je dat de waarde al bestaat.
 
Frank -

Frank -

20/11/2007 12:59:00
Quote Anchor link
Yep, je krijgt een melding: De query zal mislukken en de naam van de constraint (UNIQUE-constraint) doorgeven. Hiermee kun je dus vaststellen dat de code al bestond en vervolgens nog een poging wagen.

MySQL geeft geen naam van een constraint door, uitsluitend de melding dat er ergens een constraint is overtreden. De details mag je dan lekker zelf uit gaan zoeken... Met mysql_errno() krijg je foutnummer 1062 voor je kiezen, maar dit kan dus van alles en nog wat betekenen.

@Blanche: Je doet de aaname dat het deze UNIQUE-constraint is, de zekerheid krijg je alleen door met een SELECT-query to controleren of dat ook daadwerkelijk het geval is. Een tabel kent vrijwel altijd meerdere contraints, denk bv. aan de PK, die kunnen allemaal een foutmelding geven.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Winston Smith

Winston Smith

20/11/2007 13:06:00
Quote Anchor link
Quote:
Te lang...??

substr(md5(.....), 1, 5);
Quote:
Wat je kan doen is een MD5 hash maken en daarvan een substr te gebruiken.
Als je een substr() toepast op md5 wil dat overigens niet zeggen dat de string altijd uniek is! Dat is bij een volledige md5-string al niet zo (alhoewel het zelden zal voorkomen dat je exact dezelfde hash krijgt bij 2 strings), maar bij maar 5 tekens wordt de kans op gelijke uitkomsten wel een stuk groter.
 
OMEGA_ReD

OMEGA_ReD

20/11/2007 13:36:00
Quote Anchor link
het gaat om een een stuk of 12000 verschillende id's

maar ik probeer het wel en zie het vanzelf wel.

ik laat het hier wel even horen.

maar ik wist niet dat md5 zelf ook dubbele waardes konden hebben met verschillende waardes.

is sha1 beter dan md5?
 
Frank -

Frank -

20/11/2007 13:40:00
Quote Anchor link
Ja, sha1 is veiliger dan md5. Wanneer je echter een substring daarvan neemt, maakt het geen moer meer uit.

sha1 heeft minder collisions dan md5, intelligent kraken kost dus meer tijd. Brute force kraken kan altijd, maar dan maakt de hashing methode niet meer uit.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.