Portál AbcLinuxu, 6. května 2025 11:21

Dotaz: MD5 a Python

5.6.2021 02:40 Olaf
MD5 a Python
Přečteno: 505×
Odpovědět | Admin
Hraju si s API Webshare.cz (kvůli tomu, abych z pracovny dětem pouštěl pohádky v obýváku). Co mě hned zkraje dost zdrželo, je, že chtějí heslo hashované jako sha1(md5(heslo)). A jak vidím, není to jednoznačný požadavek. V seznamu API je i něco jako salt. MD5 a salt? Hm? To přece nebylo navrženo se solí, ne?

A dostávám se k následujícímu. První pokus (a mnohé další) v Pythonu byly něco jako:
import hashlib
import crypt

md5_pass = crypt.crypt(PSW, crypt.METHOD_MD5)
secret_password = hashlib.sha1(md5_pass.encode('utf-8')).hexdigest()
což nevrátilo správný řetězec. Ten byl vrácen správně právě až při použití soli, a to za pomoci externí knihovny (jíž jsem musel najít na internetu, passlib):
import hashlib
from passlib.hash import md5_crypt

md5_pass = md5_crypt.hash(PSW, salt=salt)
secret_password = hashlib.sha1(md5_pass.encode('utf-8')).hexdigest()
Toto je už OK výsledek. Obé MD5 stringy se liší. Může mi někdo vysvětlit, kde je zakopaný pes?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Bystroushaak)
5.6.2021 06:40 .
Rozbalit Rozbalit vše Re: MD5 a Python
Odpovědět | | Sbalit | Link | Blokovat | Admin
Odpověděl sis sám. Když to chce ještě salt, tak to asi nebude jen MD5 hesla.

Já v té dokumentaci vidím napsáno SHA1(MD5_CRYPT(password)) a MD5 Crypt není MD5.
10.6.2021 14:23 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: MD5 a Python
Odpovědět | | Sbalit | Link | Blokovat | Admin
Sůl nijak nesouvisí s hashovacím algoritmem. Můžete ho používat s čímkoli – s SHA-2, s SHA-1, s MD5, s MD4, třeba i s CRC32. Salt znamená, že se k heslu přidá sůl, teprve z této kombinace se počítá hash. Sůl se pak uloží na výstup spolu s hashem.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.