Véletlen szerű kreáció...
Halló!
Mivel lehet úgy kreálni felhasználó nevet,hogy sosem ismétli magát.Tehát ha már Kis Pista véletlenül ráment az oldalra és a gép kidobja neki azt hogy Q0wC32GW9ÁűX19ú akkor ezt már nem dobja ki senkinek sem.
Karakterek 0-9ig számok (csak 1 betűs)a-z (csak 1 betűs)A-Z és csak 15 karakter.
■ Mivel lehet úgy kreálni felhasználó nevet,hogy sosem ismétli magát.Tehát ha már Kis Pista véletlenül ráment az oldalra és a gép kidobja neki azt hogy Q0wC32GW9ÁűX19ú akkor ezt már nem dobja ki senkinek sem.
Karakterek 0-9ig számok (csak 1 betűs)a-z (csak 1 betűs)A-Z és csak 15 karakter.
Új lenyomat alapu kód generátor!
md5 pl.md5
És ha valaki látja? Újra
Újra össze hasonlítja és kész!
Mi a biztosíték rá, hogy az
(ha jól emlékszem, MD5-ből nem lehet visszafejteni az eredeti értéket, mert több értékhez is tartozhat azonos kimenet)
Meg mi van akkor, ha nem elég jó felbontású az órája és két egyszerre érkező kérést olyan gyorsan feldolgoz a gép, hogy az időpont nem változik?
Egyébként, ha 100%-ig biztosra akarok menni, akkor gyűjtöm adatbázisba a már kiosztott kódokat és ha a generált kód már szerepel benne, akkor gyártok újat.
Az MD5 ismétlődik, azaz lehet
És ha tele lesz a HDD?
Tudom. Csak kicsit kötekedni
dátum idő ip:
Év-ip-perc-másodper-Egy input mező(*)-hónap-óra-nap
*=Például megkérdezem hány éves
Legjobb esetben 21karakter íme:(-el elválasztva a jobb megfigyelhetőség kedvéért)
2011-00.00.00.00-1-1-9-1-1-1
Ez felhasználó névnek elég hosszú...
MG:nem kell aggódni,hogy rájönnek mert a jelszó az még hosszabb....
A jelszó:
Év-ip-perc-másodper-Egy input mező(*)-hónap-óra-nap-óra-másodper-ip-év-kontinens-hét-nap-3betűs nap-ip.
vagyis ez is elég hosszú.....
Tényleg kezd egyre
Megkérdez vmit, aztán felvázol 20 másik lehetőséget?
A másodperc szó rosszul van lementve a szótárában! :D
Én a kontinensen konkrétan
Ha jól sejtem, az időzónára
És mi az az "Új lenyomat"?
Lenyomat v2.0 :)
uniqid()
tényleg nem túl jó a
De egyébként mindenképpen ajánlanám NosnOsnoS figyelmébe a hasitási elrásáok utána olvasását, pl a nettakadémián van videó is Ethical Hacking címszó alatt ahol többek közt a MD5-röl is van szó és a szótárazásról meg ilyesmi.
Az md5 egy sztringből egy
- véletlen sztringeket generálsz (pl. base_convert(mt_rand(), 10, 36)), figyeled, hogy ütközik-e már meglévővel, ha igen, eldobod, és újat generálsz. Ha a tartomány, amiből válogatsz, sokkal nagyobb, mint a felhasználók számának a négyzete, akkor az ütközések ritkák lesznek.
- a pontos időből generálod a felhasználónevet; pl. uniqid() vagy a PECL uuid csomagja. Ezt szokás kombinálni az előzővel, pl. md5(uniqid(mt_rand(), true)).
- veszel egy minden sztringgenerálásnál növelt számot (pl. a userid-t), és abból generálsz pszeudovéletlen sztringet valami erre a célra kitalált függvénnyel. (Ez általában ugyanaz a függvény lesz, amivel véletlenszámot generálnál, csak előtte beállítod a seedet.)
Az md5 egy sztringből egy
Eddig igaz.
Ez viszont nagyon nem. Mivel az MD5 fv. végtelen halmaz -> véges halmaz irányú leképezés, triviális, hogy vannak ütközések, ismétlődő kimeneti stringek, amiket mellesleg nagyon sokan ki is használnak támadó célokra.
A legegyszerűbben egyedi (ellenben nem véletlenszerű) felhasználóneveket akkor kapna, ha mindig növelne egy számot. Ha szóba jöhet a túlcsordulás lehetősége, akkor meg a számot stringként kell tárolni, kellően nagy hosszal ahhoz, hogy elképzelhető időtartományon belül ne legyen probléma a túlcsordulásból.
Ha szükség van véletlenszerűségre, elég egyszerű pszeudo-random számot generáltatni, azt el lehet tárolni, és ellenőrizni, hogy már generálták-e. Ha igen, újat kell generálni. Csak itt is figyelni kell azt, hogy az éppen használt értékkészletben ne fogyjanak el a számok.
Ezt meg meg lehet fejelni tetszőleges 1:1 leképezéssel stringgé alakító függvénnyel, hogy azért mégse egy szám legyen mindenki, mint Az ember tragédiájában.
Az MD5 128 bites sztringet
Az md5 egy sztringből egy
Szerintem inkább kezdjük
Egyébként meg nem érdemes sztringekkel bajlódni, mert hosszúak és erőforrásigényesek. Továbbá az egyetlen tuti biztos megoldás az ismétlődés elkerülésére, ha adatbázisba mentesz és mindig vizsgálod hogy nincs-e benne az új kreálandó sztring, de mint mondtam ez nem a legjobb megoldás. Javaslom hogy felejtsd el a sztringeket, és használj egyszerű integer ID-ket, vagyis egyszerű számokat. Ekkor nem kell majd bajlódni az adatbázisban turkálással sem, mert egyszerűen mindig egyel nagyobb számot kap az új felhasználó mint az előtte levő és kész. Ha pedig mindenképpen ilyen sztringekre vágysz, akkor az imént említett ID-ket felhasználhatod ilyen egyedi sztringek generálására. Tehát ha Kis Pista ID-je az mondjuk 24, akkor erre ráeresztesz egy sha1-et, vagy egy md5-öt (ami önmagában még két különböző ID esetén is adhat azonos kimenetet) és a végéhez hozzácsapod még az ID-t is. Így 100% hogy nem lesz soha az életbe két egyforma sztringed.
erre ráeresztesz egy sha1-et,
A soft error (adatok véletlen megváltozása a memóriában, pl. a kozmikus sugárzás vagy a nyomtatott áramkörökben használt anyagok nagyon enyhe radioaktív sugárzása miatt) esélye kb. 10^-13 per óra (1); ha feltesszük, hogy egy 100G-s memória adott bájtjának kell megváltoznia adott ezredmásodpercben ahhoz, hogy ez véletlen ütközést okozzon az általad leírt biztonságos algoritmusban, akkor az oldal egy éves fennállása alatt kb. 10^-26 eséllyel okoz soft error ütközést. Egy MD5 ütközés esélye egymillió felhasználó esetén kb. ugyanekkora, SHA-1 ütközés esélye kb. 10^-36. Teljesen felesleges FUD, hogy a kriptográfiailag (valamennyire) biztonságos hash függvényeknél a véletlen ütközésnek bármi gyakorlati jelentősége lenne.