Autor Zpráva
blaaablaaa
Profil
Ahoj,

potrebuju vytvorit MD5 otisk v javascriptu. Jelikoz v projektu pouzivam knihovnu GibberishAES (http://github.com/mdp/gibberish-aes/blob/master/src/gibberish-aes.js), pouzil jsem funkci GibberishAES.Hash.MD5 (v predchozim odkaze zacina na radku 590.
Ta vsak napr pro string "a" vraci "147,184,133,173,254,13,160,137,205,246,52,144,79,213,159,113" - coz netusim, co je zac.
Muzete nekdo poradit, jak z daneho retezce dostat hexadecimalni podobu hashe?

Diky
Joker
Profil
blaaablaaa:
Muzete nekdo poradit, jak z daneho retezce dostat hexadecimalni podobu hashe?
Prostě převést do šestnáctkové soustavy, řekl bych.
147,184,133,173,254,13,160,137,205,246,52,144,79,213,159,113 =
93 - B8 - 85 - AD - FE -0D- A0 - 89 - DC - F6-34- 90-4F- F5 - 9F - 71
blaaablaaa
Profil
Joker:
Diky. MD5 hash "a" je ale "0cc175b9c0f1b6a831c399e269772661" :(
Chamurappi
Profil
Reaguji na blaaablaaa:
To je správně, ne?
blaaablaaa
Profil
Chamurappi:
Mozna jsem se nepresne vyjadril:
GibberishAES.Hash.MD5("a") vrati "147,184,133,173,254,13,160,137,205,246,52,144,79,213,159,113", po prevodu "93b885adfe0da089dcf634904ff59f71", coz je spatne.
Spravny vysledek by mel byt "0cc175b9c0f1b6a831c399e269772661"
Joker
Profil
blaaablaaa:
Z odkazovaného kódu:
MD5 = function(numArr) {
Určitě má být vstupem řetězec?
blaaablaaa
Profil
Joker:
Mas pravdu, ale i kdyz pouziju pole (znaku i jejich ordinalnich hodnot), vraci to:
Dec2Hex(GibberishAES.Hash.MD5(Array(95))); //9e0573ecb4a0800788a3aa64ad731bbc
Dec2Hex(GibberishAES.Hash.MD5(Array("a"))); //93b885adfe0da089cdf634904fd59f71
Dec2Hex(GibberishAES.Hash.MD5("a")); //93b885adfe0da089cdf634904fd59f71
Dec2Hex(GibberishAES.Hash.MD5(95)); //d41d8cd98f00b204e9800998ecf8427e
Joker
Profil
blaaablaaa:
1. Budiž to ponaučením, že je lepší používat kód, ke kterému existuje nějaká dokumentace (i když tady zjevně ta MD5 funkce je zamýšlená jako pomocná funkce a nepočítá se s jejím používáním „zvenku“).
2. Není-li dokumentace, další zdroj informací je podívat se jak se ta funkce v kódu volá. Podle hledání v odkazovaném skriptu ta funkce očekává pole čísel, totéž jako vrací (dělá se tam i MD5 toho co vrátí předchozí MD5).
3. "a" není 95, ale 97, ovšem výstup v komentáři je skutečně pro 97, takže to je asi jen překlep tady v příspěvku.

Zdá se, že pro delší řetězec to funguje:
MD5 "aa" je:
4124bc0a9335c27f086f24ba207a4912

dec2hex(GibberishAES.Hash.MD5(new Array(97, 97))) =
4124bc0a9335c27f086f24ba207a4912

Proč to nefunguje pro jednoznakový řetězec jsem nezkoumal, zas tolik času nemám.
blaaablaaa
Profil
Joker:
2. omlouvam se, mel jsem si nejdriv poradne projit kod
3. mas pravdu, jde jen o preklep (pri testovani jsem pouzil fci ord)

Diky tedy za reseni, jednoznakove retezce stejne pouzivat nebudu, takze to nevadi.
Chamurappi
Profil
Reaguji na blaaablaaa:
Array(95)
Tohle nevyrobí pole obsahující číslo 95, ale pole obsahující 95-krát undefined.
blaaablaaa
Profil
Chamurappi:
A problem vyresen.
Dec2Hex(GibberishAES.Hash.MD5([95])); //vraci spravne 0cc175b9c0f1b6a831c399e269772661

Diky

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0