Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Ako správne zapísať heslo do mysql DB

Dobry den, :-)
mam problem so zapisovanim hesiel do mysql DB. Konkretne taky, ze ked do DB vlozim heslo pomocou funkcie password('heslo'), vlozim mi to do DB zakodovane (na polozku heslo mam nastaveny CHAR(15)), teda tych klasickych zakodovanych 15 znakov, ale na zaciatok tohto retazca mi to vlozi este hviezdicku (*). Neviem preco to robi a zakodovane heslo uz z DB nevycitam (teda ho neviem overit, ked zadam to iste heslo a tiez ho kodujem funkciou PASSWORD('') a tak porovnavam).

Skusal som take banality ako nahradit prve pismeno z hesla pri citani tou blbou hviezdickou, ale samozrejme nic.

Ak vie niekto ako na riesenie, napiste prosim, bol by som rad.:-[

nakoniec nejake tie udaje:

MySQL v4.1.16
PHP v5.1.1
phpMyAdmin v2.8.1

Předmět Autor Datum
Keď porovnávaš heslo z databázy s heslom zakódovaným funkciou PASSWORD, tak ho orežeš na tých 15 zna…
los 31.08.2006 16:33
los
1. Ani jedno heslo, ktore zapisujem do DB nie je dlhe 15 znakov (15 znakov ma byt maximalna dlzka he…
2laak 31.08.2006 16:55
2laak
Od dĺžky hesla nezávisí dĺžka hešu, ktorý zapisuješ do databázy, pretože dĺžka hešu je rovnaká. V st…
los 31.08.2006 17:29
los
Dakujem, uz je mi to jasne a uz aj ta * na zaciatku :-[. Trochu zmatku som narobil. ale aspon som sa… poslední
2laak 31.08.2006 17:34
2laak

Keď porovnávaš heslo z databázy s heslom zakódovaným funkciou PASSWORD, tak ho orežeš na tých 15 znakov, aby mali rovnakú dĺžku? Tie heslá, ktoré máš v databáze, boli zapísané tou istou verziou MySQL? Používať funkciu PASSWORD sa neodporúča, pretože sa môže meniť. Namiesto nej môžeš použiť MD5, SHA1 alebo inú hešovaciu funkciu.

1. Ani jedno heslo, ktore zapisujem do DB nie je dlhe 15 znakov (15 znakov ma byt maximalna dlzka hesla)
2. Ano, hesla boli zapisane v tom istom phpMyadmine, v ktorom som ich chcel skontrolovat.
3. Ucim sa z knihy, kde sa o inej kodovacej funkcii nepise, teda nepoznam pouzitie ani MD5 ani SHA1.

Este jedna poznamka, v starsej verzii mysql 4.xx fungovala tato funkcia v poriadku, teda zapis funkciou PASSWORD prebehol spravne.

Od dĺžky hesla nezávisí dĺžka hešu, ktorý zapisuješ do databázy, pretože dĺžka hešu je rovnaká. V staršej verzii to bolo 16 znakov, teraz je to viac a preto sa to pri vkladaní oreže. Pri porovnávaní potom porovnávaš reťazce rôznej dĺžky.

Treba zväčšiť dĺžku toho poľa a použiť takú funkciu na hešovanie, pri ktorej vieš, koľko miesta na to potrebuješ (md5, sha1 - viď manuál).

Funkcia PASSWORD vráti niečo takéto (to sa do 15 znakov nevojde):

mysql> select password('heslo')
*AADB89769FF364D8537700AE065872FDA6E980F3

mysql> select old_password('heslo')
4e633cf914a735a0

Zpět do poradny Odpovědět na původní otázku Nahoru