Jelszó tárolása

Tudom, hogy a programban tárolt jelszavak az ini fájlokban, a rendszerleíró adatbázisban tárolhatók, de a probléma az, hogy bárki láthatja őket, van-e koordináltabb módja a jelszavak tárolására?

Olvastam ezt a cikket, de mindennek nincs rendben

És ott nem tárolja a jelszavakat. Tárolja a jelszó hash kódját úgy, hogy a kulccsal rendelkező bármely kiegyensúlyozatlan titkosítási algoritmust kiválasztja. Ez a helyzet a rendszerek túlnyomó többségében.

Kesch - tudomásom szerint a legtöbb program megfejthető.
Valaki azt mondta, hogy a jelszavak tárolhatók az adatbázisban - hogyan? (Korábban soha nem dolgoztam az adatbázisokkal)


tudják megfejteni.

Nem definiálható
Kiválaszthatja a jelszót

Oké, de akkor lehet egy példa, hogy adják ezt mindezt?


> Valaki azt mondta nekem, hogy a jelszavak tárolhatók az adatbázisban
>

nem különbözik a nyilvántartás tárolásától, initshki-ból stb. a hozzáférés szempontjából. Hozzon létre ugyanazt az adatbázist a jelszóhoz. ez csak akkor, ha sok jelszó :))

funkció Crypt (s: string): string;
kezdődik
# xA0; Eredmény: = s;
# xA0; i: = 0 - hossz (eredmény) -1 do
# xA0; # xA0, ha furcsa (i), akkor Eredmény [i]: = Eredmény [i] xor 5 más Eredmény [i]: = Eredmény [i] xor 2;
végén;


AssignFile (f, "password.txt");
Reset (f);
Readln (f, s);
s: = kripta (k);
CloseFile (f);
.

És aki részletesen elmondja nekem, hogyan kell létrehoznia egy kis adatbázist a jelszavak tárolására, és hogy számolhasson ki onnan?

Mondja meg, miért kell tárolnia a jelszót?

A programot meg kell nyitnia a jelszó megadásával, amelyet a programban létrehozott minden felhasználónak megad. Jelenleg ezek a jelszavak és felhasználói nevek az ini fájlban tárolódnak. De ez nem biztonságos. Ezért van szükségem további cardinális módszerekre a jelszó és a felhasználói nevek tárolására.

Panteleev Ivan # xA0; (13.08.05 13:11) [14]
Nos, miért tartaná meg ezt a jelszót?

A hasok elegendő tárolása

Nem, azt hiszem, még mindig túl korán van. Szóval azt akarom, hogy a jelszavak az adatbázisban tárolódjanak.

Ha lehetséges - magyarázza el, hogyan kell ezt tennie?

Panteleev Ivan # xA0;
A felhasználó beírja a "tehén" jelszót, a program ezt a "tehén" szót kapja, és valamilyen funkcióval kezeli.
Funkció ("tehén")
A funkció a "tehén" szót feldolgozza, és eredményt ad, például hash-jét - valami "abcd3452f67sdf" - ez az eredmény, amit a * .ini fájlba írunk.

Amikor a felhasználó legközelebb megadja a jelszót, a program újra feldolgozza a jelszót ezzel a funkcióval, megkapja az eredményt, és összehasonlítja azt az ini fájlból származó olvasással. ha ugyanaz, a felhasználó hozzáférést kap.

Így kényelmesebbé, mert a jelszó "tehén" hash "abcd3452f67sdf" nem teszi lehetővé a felhasználó számára hozzáférést - miután a program feldolgozza és kap egy másik hash értéket. Ezért nincs szükség elrejteni a hashot - valójában nem ad semmit a támadónak -, hogy a jelszó nem működik, és megkapja a "tehén" valódi jelszavát, csak nem fog működni.
Kényelmes és gyors kiszámítani a hashot MD5 algoritmussal - van egy függvény "Egy karaktersorozat kiszámítása"

összesen kilobyte 20

függvény EnDeCrypt (const szöveg: String): String;
var i: egész szám;
kezdődik
# xA0; Eredmény: = szöveg;
# xA0; i: = 1-höz (szöveg)
# xA0; # xA0; Eredmény [i]: = chr (nem (ord (szöveg [i])));
végén;

Vrem # xA0; (13.08.05 20:46) [22]
Valami amit nem értettem a gyorsítótárral.
Talán valaki jobban példázza, vagy nem tudom.

Panteleev Ivan # xA0; (2005.05.15. 1:03) [24]
A hasítás lényege, hogy nem tárolja az adatokat (az Ön esetében, a jelszavát) nyílt formában vagy titkosított formában. Ehelyett az adatokat kifejezetten egy hash függvény feldolgozza, amely ugyanazt az értéket adja vissza ugyanarra a forrásadatra, és:
1. különböző kiindulási adatok felvenni, amelyeknél a feldolgozási fázis azonos értékeket ad vissza, szinte lehetetlen
2. az eredeti adatokat nem lehet visszaállítani a visszatérési értékben

Az Ön esetében csak meg kell tudnia, hogy a felhasználó által megadott jelszó helyes-e. Ehhez meg kell hívnia a hash függvényt (az adatokat feldolgozó függvényt) a felhasználó által megadott jelszóhoz, és ugyanazt a funkciót a helyes jelszóhoz visszaküldött értéknek, amit bárhol tárolhat. Tehát, ha ez a két érték egyezik, akkor a felhasználó beírta a helyes jelszót.

Ui Ha valami nem világos, akkor kérdezze meg jobban, és ne adja fel ezt a módszert.

P.P.S. A Cash és a Hash teljesen más dolog)

Ui És mi a Hesh?

Panteleev Ivan # xA0; (Augusztus 15 05 10:11) [27]

> Delphi írja - nem lehet megtalálni az md5.dcu fájlt

Mmm, letöltötte az md5.pas fájlt és tette a projekt mappába?

Ui
Hash, ő Hash, ő Hash
A hash függvény egy bemeneti függvény, amely bizonyos adatokat fogad, és egy bizonyos értékű fix hosszúságú
A hash érték a hash függvény által visszaadott érték


> Aztán beállíthatja a jelszó minimális hosszát. Például
> jelzések 10.

A karakterek minimális száma nem befolyásolja a "rejtett" jelszó meghatározásának bonyolultságát a xoron keresztül (hacsak a "cracker" nem próbálja ki a próbát és a hibát, a billentyűzetből gépelve) :)

Igen, letöltöttem, mb5.pas, de nem változtatott semmit, vseravno vylazin hiba.

2. Minden tárolja bináris fájlban, van egy proxoreny jelszó is.

Panteleev Ivan # xA0; (15.05.05. 16:00) [31]

> Igen, letöltöttem

És tegye a mappát a projekthez?

És lehet az utasítás, hogyan készítsen bináris fájlt?
Ellenőrizem a jelszavát a szerkesztésben valami ilyesmi:

ha Edit1.Text <> Ezután "Jelszó".

A francba, aki ezt a fióktelepet a "Beginners" kon!

Igen, az adatbázist át kellett helyezni. Vagy VyhNAPI.

Panteleev Ivan # xA0; (16.08.05 1:01) [34]
Körülbelül annyira (csak a jelszó helyett el tudja menteni a hash-ot, és titkosítani a mentés előtt):
eljárás TForm1.SavePassword (_name, pass: string);
var _MM: TMemoryStream; PE: TPassElement;
kezdődik
_MM: = TMemoryStream.Create;
megpróbál
PE._name: = _ név;
PE._pass: = át;
_mm.Write (pe, sizeof (TPassElement));
_mm.SaveToFile (extractfilepath (application.ExeName) + "kulcs");
végül
_mm.Free;
végén;
végén;

funkció TForm1.CheckPassword (_name, pass: string): boolean;
var _MM: TMemoryStream; PE: TPassElement;
kezdődik
eredmény: = hamis;
_MM: = TMemoryStream.Create;
megpróbál
ha fileexists (extractfilepath (application.ExeName) + "kulcs") thenbegin
_mm.LoadFromFile (extractfilepath (application.ExeName) + "kulcs");
_mm.Read (pl, sizeof (TPassElement));
ha (kisbetűs (_name) = kisbetűs (pe._name)) és (kisbetűs (pass) = kisbetűs (pe._pass)), akkor
eredmény: = true;
végén;
végül
_mm.Free;
végén;
végén;

használni:
ha a CheckPassword (szerkesztés1.Text, edit2.Text) majd

A Delphi nem találja a TPassElementet!

És a szeretők, miért? így kevésbé megbízható?

és a megbízhatóság szempontjából a hacker: mindazt, amit meg kell találni és megkerülni, ez -
ha (kisbetűs (_name) = kisbetűs (pe._name)) és (kisbetűs (pass) = kisbetűs (pe._pass)), akkor

Ami nem nehezebb elemezni a proksorenny jelszót.

Kapcsolódó cikkek