Portál AbcLinuxu, 15. července 2025 01:41


Dotaz: MD5 v jazyce C

31.1.2009 11:22 mireczek
MD5 v jazyce C
Přečteno: 428×
Odpovědět | Admin

Dobry den, jakym zpusobem mohu prosim v programu v jazyce C vytvorit z retezce MD5 hash?

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

Odpovědi

31.1.2009 11:38 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: MD5 v jazyce C
Odpovědět | | Sbalit | Link | Blokovat | Admin
man MD5 (libopenssl)
I am always ready to learn although I do not always like to be taught. (W. Churchill)
31.1.2009 12:55 mireczek
Rozbalit Rozbalit vše Re: MD5 v jazyce C

Muzete mi prosim napsat kostru programu co zahashuje treba retezec "ahoj"? Nejsem v programovani moc zbehly. Dekuji.


 

31.1.2009 13:09 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: MD5 v jazyce C
Příloha:

Ja som si skusil osviezit znalosti z C a vzniklo to co je v prilohe.

Zkompiluje sa prikazom "gcc -lssl main.c"

31.1.2009 13:22 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: MD5 v jazyce C
#include <openssl/md5.h>
#include <stdio.h>
#include <string.h>

int main(void)
{
  char text[] = "ahoj";
  unsigned char hash[16];
  int i;

  MD5((unsigned char *) text, strlen(text), hash);

  for(i = 0; i < sizeof(hash); i++)
    printf("%02X", (int) hash[i]);

  putchar('\n');

  return 0;
}
Přeložíš to příkazem gcc -Wall -lssl jmeno_souboru.c
Užívej dne – možná je tvůj poslední.
stativ avatar 31.1.2009 14:25 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: MD5 v jazyce C
Zrovna u tohohle stačí mrknout do man stránky a vyjde ti něvo takového:
#include <openssl/md5.h>

int main() {
  unsigned char * zahashovanyRetezec = MD5 ("ahoj",4,NULL);
  return 0;
}
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
31.1.2009 13:37 mireczek
Rozbalit Rozbalit vše Re: MD5 v jazyce C
Odpovědět | | Sbalit | Link | Blokovat | Admin

Dekuji obema - toto je prave to, cim jsem si nebyl jisty: Jaky je rozdil kdyz pouziji pouze funkci MD5() nebo kdyz pouziji sekvenci fci MD5_Init, MD5_Update a MD5_Final?

31.1.2009 14:00 Boris Dušek | skóre: 22 | blog: everything
Rozbalit Rozbalit vše Re: MD5 v jazyce C

aniž vím z dokumentace, jaký rozdíl je, tak asi tuším - obecně, když se třeba dělá hash pár set MB dat (třeba hash ISO obrazu CD), tak nebudeš mít celý ISO obraz v paměti, ale budeš načítat po kouscích (třeba po 1MB), a připočítáš nějak k hashi předchozích částí hash právě načtené části pomocí MD5_Update (tzn. MD5_Update zavoláš třeba pársetkrát pro ten ISO obraz). Před prvním zavoláním MD5_Update zavoláš MD5_Init, aby si inicializoval výpočet, po posledním zavolání zavoláš MD5_Final, abys výpočet dokončil. Ale když máš málo dat (třeba řetězec, nebo malý soubor), tak bys MD5_Update volal jen jednou, a před tím bys musel zavolat MD5_Init a potom MD5_Final, takže abys tam neměl tolik omáčky, tak je pro tvé pohodlí ještě funkce MD5, která udělá přesně to, co jsem popsal, tedy 3 volání v jednom kroce, takže ty nemusíš tolik psát a je to přehlednější (ale nepoužitelné pro velká data).

vim ~/.emacs
7.2.2009 01:23 Deleted [8409] | skóre: 14 | blog: darkblog
Rozbalit Rozbalit vše Re: MD5 v jazyce C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud nechcete linkovat s knihovnou ssl, tak se na internetu válí i implementace, které jen vložíte do vašeho projektu (MD5 není dlouhá funkce).

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.