[c] MD5 Voorbeeld (md5.h)

Pagina: 1
Acties:

  • CT
  • Registratie: September 2001
  • Laatst online: 22:46

CT

📱💻 🎮 ⌚🖥

Topicstarter
Wie kan mij een stukje example code geven waarin een char setje wordt gecodeerd in md5 ?

Dus iets in de trant van:
code:
1
2
3
4
5
6
#include <openssl/md5.h>

main(int argc,char *argv[])
{
    printf("%s\n", MD5(argv[1]));
}


Dit werkt niet, maar ik kan nergens wat vinden over de parameters die in MD5() wel werken.
En van de man md5 word ik ook niks wijzer... en ik heb de got-search al gebruikt en me suf gezocht op google.. niks :(

Wie helpt?

  • zerok
  • Registratie: November 2001
  • Laatst online: 18-08 18:27

zerok

geen

Heb zelf ooit eens een functie om md5 te maken geschreven/gecut en gepast :).

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <openssl/evp.h>

char md5string(char *msg)
{
 EVP_MD_CTX mdctx;
 const EVP_MD *md;
 unsigned char md_value[EVP_MAX_MD_SIZE];
// unsigned char ret_value[EVP_MAX_MD_SIZE];
 unsigned int md_len = strlen(msg);
 unsigned int i;

 OpenSSL_add_all_digests();

 md = EVP_get_digestbyname("md5");
 if(!md)
    {
         printf("Unknown message digest\n");
         exit(1);
        }

 EVP_DigestInit(&mdctx, md);
 EVP_DigestUpdate(&mdctx, msg, md_len);
 EVP_DigestFinal(&mdctx, md_value, &md_len);

 for(i = 0; i < md_len; i++)
    sprintf((msg + (2 * i)),"%02x", md_value[i]);
 return 0;
}

Dit compilde ik dan als library en gebruikte ik in mijn programma.
Gewoon md5string(variable-name);
Als je een verie van mijn geweldige msn progsel wil hebben moet je me maar mailen.

"never argue with idiots they drag you down to their level and beat you with experience" dilbert


  • lordsnow
  • Registratie: Maart 2000
  • Laatst online: 22-08 10:41

lordsnow

I know nothing

Never argue with idiots. They drag you down to their level and beat you with experience.

Sorry... kon 't niet laten :)

  • CT
  • Registratie: September 2001
  • Laatst online: 22:46

CT

📱💻 🎮 ⌚🖥

Topicstarter
What's that suppose to mean ? :P

[ Voor 4% gewijzigd door CT op 18-01-2003 21:38 ]


  • CT
  • Registratie: September 2001
  • Laatst online: 22:46

CT

📱💻 🎮 ⌚🖥

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "global.h"
#include "md5.h"

main(int argc,char *argv[])
{
          MD5_CTX context;
          unsigned int len;

                                                len = strlen (argv[1]);
                                                MDInit (&context);
                                                MDUpdate (&context, argv[1], len);
                                                MDFinal (digest, &context);
                                                MDPrint(digest);
                                                printf("\n");
}

static void MDPrint (digest)
unsigned char digest[16];
{
            unsigned int i;
            for (i = 0; i < 16; i++) {
                   printf ("%02x", digest[i]);
            }
}


Nou dit is het maar geworden uiteindelijk.. denk niet dat dit voorbeeld 100% werkt maar zo moet het dus (voor het geval iemand de search nog used :) )

Met deze md5 werkt dat.

En het voorbeeld hierboven, heb je dat zelf gemaakt? Vinnik dan wel knap ;) want wat ik nu heb is (vind ik) wat begrijpelijker :P

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
lordsnow schreef op 18 januari 2003 @ 21:34:
Never argue with idiots. They drag you down to their level and beat you with experience.
Hahaha, dat is echt een goede uitspraak :) Van wie is die ?

  • zerok
  • Registratie: November 2001
  • Laatst online: 18-08 18:27

zerok

geen

Dash2in1 schreef op 19 januari 2003 @ 08:04:
[...]


Hahaha, dat is echt een goede uitspraak :) Van wie is die ?
Ooit eens op het i-net gevonden vond het wel een goed motto

"never argue with idiots they drag you down to their level and beat you with experience" dilbert


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16:18

.oisyn

Moderator Devschuur®

Demotivational Speaker

Niet dat ik het gebruik van standaard libs af wil raden, maar zo moeilijk is het nou ook weer niet om een eigen MD5 implementatie te maken. Je kunt zelfs regelrecht copypasten uit RFC 1321 :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 24-08 23:08
.oisyn schreef op 19 January 2003 @ 12:31:
Niet dat ik het gebruik van standaard libs af wil raden, maar zo moeilijk is het nou ook weer niet om een eigen MD5 implementatie te maken. Je kunt zelfs regelrecht copypasten uit RFC 1321 :)
Hmm, hoe is dat een eigen MD5 implementatie maken? Maar je hebt gelijk, je zou die C code over kunnen nemen. Toch lijkt het me verstandiger om er van uit te gaan dat de op jouw platform beschikbare implementatie het meest geschikt is; misschien zijn er bepaalde platform-specifieke optimalisaties toegepast. Je kopieert toch ook niet je standaard C library code naar je eigen applicatie, wanneer die toevallig beschikbaar is?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16:18

.oisyn

Moderator Devschuur®

Demotivational Speaker

[nohtml]
Soultaker schreef op 19 January 2003 @ 13:06:
[...]

Hmm, hoe is dat een eigen MD5 implementatie maken?
mja, idd verkeerde woordkeuze :)
Voor de rest heb je natuurlijk helemaal gelijk, en dit gaf ik al aan, maar het blijft natuurlijk altijd een optie als die library echt niet wil werken (of eerder, als de code van de topicstarter niet wil samenwerken met de library ;))

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Soultaker schreef op 19 January 2003 @ 13:06:
Hmm, hoe is dat een eigen MD5 implementatie maken? Maar je hebt gelijk, je zou die C code over kunnen nemen. Toch lijkt het me verstandiger om er van uit te gaan dat de op jouw platform beschikbare implementatie het meest geschikt is; misschien zijn er bepaalde platform-specifieke optimalisaties toegepast. Je kopieert toch ook niet je standaard C library code naar je eigen applicatie, wanneer die toevallig beschikbaar is?
Mmm die RFC-code is extreem geoptimaliseerde C waar nog weinig aan te winnen is. Het is puur rekenstampwerk dus OS-specific optimalisaties zijn onmogelijk, en de platform/CPU-optimalisaties zijn de verantwoordelijkheid van je compiler. An sich heb je voor veel dingen gelijk, maar in dit geval is copy/paste uit die RFC of afgeleide code echt het snelste en handigste.

Ik heb zelf van een publicly available C++ implementatie een eigen versie gebouwd met leesbaar commentaar, duidelijke structuur en fatsoenlijk gebruik van inlines ipv macro's, en support voor eigen custom binary/string containers. Werkt als een tiet.

Professionele website nodig?

Pagina: 1