Portál AbcLinuxu, 7. května 2025 03:13
MD5 je algoritmus, který dostane na vstup posloupnost bytů (délky od 0 do 2^64-1) a vypadne z něj 128-bitový digest. Pokud chcete spočítat MD5 digest řetězce, pak samozřejmě záleží na tom, jaké použijete kódování, protože kódování je právě přepis do té posloupnosti bytů.
mike@lion:~> echo -n řeřicha | od -t x1 0000000 c5 99 65 c5 99 69 63 68 61 0000011 mike@lion:~> echo -n řeřicha | md5sum - c5230b32ea6d06cffae51de21f90747a - mike@lion:~> echo -n řeřicha | iconv -f utf-8 -t iso-8859-2 | od -t x1 0000000 f8 65 f8 69 63 68 61 0000007 mike@lion:~> echo -n řeřicha | iconv -f utf-8 -t iso-8859-2 | md5sum - 71aa885c53c9a9d69d88f0c1db61c4ef -
To znamená že musím omezit vstupní sadu znaků na ty které podporuje to "nejnižší" používané kódování nebo jak to je?
To je jedna možnost. Druhá, IMHO vhodnější, je zvolit si jedno preferované kódování (např. UTF-8) a dostanete-li vstup v jiném, převést ho nejdřív na to preferované.
No jenže já právě nevím jaké je to preferované. Mám jednoduchý skript v php, kterým měním hesla do různých webových aplikací (využívajících mysql databázi). Problém je že já v některých případech nemohu zjistit v jakém kódování ta potenciální aplikace ukládá hesla a já potřebuju, aby hesla vytvořená mým skriptem tyto konkrétní aplikace "přečetly" a dobré by bylo aby to šlo i naopak (aplikace vytvoří v cp1250 md5 hash a já ho svým skriptem ze vstupních znaků v utf8 dokážu vytvořit také). To asi možné nebude že? Dalo by se to vyřešit tím, že bych povolil jen určité znaky? Jsou shodné ve všech kódováních bitové reprezentace pro všechny alfanumerické anglické znaky?Druhá, IMHO vhodnější, je zvolit si jedno preferované kódování (např. UTF-8) a dostanete-li vstup v jiném, převést ho nejdřív na to preferované.
crypt()
, tj. to, čemu se sice říká MD5, ale ve skutečnosti to není MD5 digest hesla (ani hesla+salt).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.