Autor | Zpráva | ||
---|---|---|---|
blaaablaaa Profil |
#1 · Zasláno: 22. 9. 2010, 13:12:09
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 |
#2 · Zasláno: 22. 9. 2010, 13:23:50
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 |
#3 · Zasláno: 22. 9. 2010, 13:38:45
Joker:
Diky. MD5 hash "a" je ale "0cc175b9c0f1b6a831c399e269772661" :( |
||
Chamurappi Profil |
#4 · Zasláno: 22. 9. 2010, 14:42:49
Reaguji na blaaablaaa:
To je správně, ne? |
||
blaaablaaa Profil |
#5 · Zasláno: 22. 9. 2010, 15:52:29
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 |
#6 · Zasláno: 22. 9. 2010, 16:35:22
blaaablaaa:
Z odkazovaného kódu: MD5 = function(numArr) { |
||
blaaablaaa Profil |
#7 · Zasláno: 23. 9. 2010, 08:55:15
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 |
#8 · Zasláno: 23. 9. 2010, 09:43:24
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 |
#9 · Zasláno: 23. 9. 2010, 09:53:19
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 |
#10 · Zasláno: 23. 9. 2010, 10:03:45
Reaguji na blaaablaaa:
„Array(95)“ Tohle nevyrobí pole obsahující číslo 95, ale pole obsahující 95-krát undefined .
|
||
blaaablaaa Profil |
#11 · Zasláno: 23. 9. 2010, 11:42:24
Chamurappi:
A problem vyresen. Dec2Hex(GibberishAES.Hash.MD5([95])); //vraci spravne 0cc175b9c0f1b6a831c399e269772661 Diky |
||
Časová prodleva: 14 let
|
0