Wie erstelle ich einen MD5-Hash aus einem String in Code::Blocks (MinGW) (GELÖST)



  • Hallo Leute,

    *also ich bin überhaupt noch kein guter Coder. Ich hab gerade mal nen Trainer für nen Spiel erstellt was ja nicht wirklich schwer ist.

    Jetzt habe ich wirklich über knapp 12 Stunden so ziemlich alle MD5 Beispiele die im Internet zu finden sind, versucht mit meiner IDE zu kompilieren, ohne Erfolg. Ich bin total am Ende!*

    Kann mir vielleicht jemand ein simples Beispiel zeigen, wie ich mit einer Konsolenapplikation einen MD5 Hash aus einem String erzeugen kann und das jenes mit Code::Blocks (Wie Dev-C++ -> MinGW) fehlerfrei funktioniert?

    Gruss

    BigL 🙂

    Wenns viel arbeit macht 😞 Ich bin bereit auch 50 Euro (PSC/Überweisung) für etwas funktionierendes zu bezahlen.



  • /*
     **********************************************************************
     ** md5.h -- Header file for implementation of MD5                   **
     ** RSA Data Security, Inc. MD5 Message Digest Algorithm             **
     ** Created: 2/17/90 RLR                                             **
     ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version              **
     ** Revised (for MD5): RLR 4/27/91                                   **
     **   -- G modified to have y&~z instead of y&z                      **
     **   -- FF, GG, HH modified to add in last register done            **
     **   -- Access pattern: round 2 works mod 5, round 3 works mod 3    **
     **   -- distinct additive constant for each step                    **
     **   -- round 4 added, working mod 7                                **
     **********************************************************************
     */
    
    /*
     **********************************************************************
     ** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. **
     **                                                                  **
     ** License to copy and use this software is granted provided that   **
     ** it is identified as the "RSA Data Security, Inc. MD5 Message     **
     ** Digest Algorithm" in all material mentioning or referencing this **
     ** software or this function.                                       **
     **                                                                  **
     ** License is also granted to make and use derivative works         **
     ** provided that such works are identified as "derived from the RSA **
     ** Data Security, Inc. MD5 Message Digest Algorithm" in all         **
     ** material mentioning or referencing the derived work.             **
     **                                                                  **
     ** RSA Data Security, Inc. makes no representations concerning      **
     ** either the merchantability of this software or the suitability   **
     ** of this software for any particular purpose.  It is provided "as **
     ** is" without express or implied warranty of any kind.             **
     **                                                                  **
     ** These notices must be retained in any copies of any part of this **
     ** documentation and/or software.                                   **
     **********************************************************************
     */
    
    /* typedef a 32 bit type */
    typedef unsigned long int UINT4;
    
    /* Data structure for MD5 (Message Digest) computation */
    typedef struct {
      UINT4 i[2];                   /* number of _bits_ handled mod 2^64 */
      UINT4 buf[4];                                    /* scratch buffer */
      unsigned char in[64];                              /* input buffer */
      unsigned char digest[16];     /* actual digest after MD5Final call */
    } MD5_CTX;
    
    /*
     **********************************************************************
     ** End of md5.h                                                     **
     ******************************* (cut) ********************************
     */
    
    /*
     **********************************************************************
     ** md5.c                                                            **
     ** RSA Data Security, Inc. MD5 Message Digest Algorithm             **
     ** Created: 2/17/90 RLR                                             **
     ** Revised: 1/91 SRD,AJ,BSK,JT Reference C Version                  **
     **********************************************************************
     */
    
    /*
     **********************************************************************
     ** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. **
     **                                                                  **
     ** License to copy and use this software is granted provided that   **
     ** it is identified as the "RSA Data Security, Inc. MD5 Message     **
     ** Digest Algorithm" in all material mentioning or referencing this **
     ** software or this function.                                       **
     **                                                                  **
     ** License is also granted to make and use derivative works         **
     ** provided that such works are identified as "derived from the RSA **
     ** Data Security, Inc. MD5 Message Digest Algorithm" in all         **
     ** material mentioning or referencing the derived work.             **
     **                                                                  **
     ** RSA Data Security, Inc. makes no representations concerning      **
     ** either the merchantability of this software or the suitability   **
     ** of this software for any particular purpose.  It is provided "as **
     ** is" without express or implied warranty of any kind.             **
     **                                                                  **
     ** These notices must be retained in any copies of any part of this **
     ** documentation and/or software.                                   **
     **********************************************************************
     */
    
    /* -- include the following line if the md5.h header file is separate -- */
    /* #include "md5.h" */
    
    /* forward declaration */
    static void Transform ();
    
    static unsigned char PADDING[64] = {
      0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    };
    
    /* F, G and H are basic MD5 functions: selection, majority, parity */
    #define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
    #define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
    #define H(x, y, z) ((x) ^ (y) ^ (z))
    #define I(x, y, z) ((y) ^ ((x) | (~z))) 
    
    /* ROTATE_LEFT rotates x left n bits */
    #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
    
    /* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4 */
    /* Rotation is separate from addition to prevent recomputation */
    #define FF(a, b, c, d, x, s, ac) \
      {(a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \
       (a) = ROTATE_LEFT ((a), (s)); \
       (a) += (b); \
      }
    #define GG(a, b, c, d, x, s, ac) \
      {(a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \
       (a) = ROTATE_LEFT ((a), (s)); \
       (a) += (b); \
      }
    #define HH(a, b, c, d, x, s, ac) \
      {(a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \
       (a) = ROTATE_LEFT ((a), (s)); \
       (a) += (b); \
      }
    #define II(a, b, c, d, x, s, ac) \
      {(a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \
       (a) = ROTATE_LEFT ((a), (s)); \
       (a) += (b); \
      }
    
    void MD5Init (mdContext)
    MD5_CTX *mdContext;
    {
      mdContext->i[0] = mdContext->i[1] = (UINT4)0;
    
      /* Load magic initialization constants.
       */
      mdContext->buf[0] = (UINT4)0x67452301;
      mdContext->buf[1] = (UINT4)0xefcdab89;
      mdContext->buf[2] = (UINT4)0x98badcfe;
      mdContext->buf[3] = (UINT4)0x10325476;
    }
    
    void MD5Update (MD5_CTX *mdContext, unsigned char *inBuf, unsigned int inLen)
    {
      UINT4 in[16];
      int mdi;
      unsigned int i, ii;
    
      /* compute number of bytes mod 64 */
      mdi = (int)((mdContext->i[0] >> 3) & 0x3F);
    
      /* update number of bits */
      if ((mdContext->i[0] + ((UINT4)inLen << 3)) < mdContext->i[0])
        mdContext->i[1]++;
      mdContext->i[0] += ((UINT4)inLen << 3);
      mdContext->i[1] += ((UINT4)inLen >> 29);
    
      while (inLen--) {
        /* add new character to buffer, increment mdi */
        mdContext->in[mdi++] = *inBuf++;
    
        /* transform if necessary */
        if (mdi == 0x40) {
          for (i = 0, ii = 0; i < 16; i++, ii += 4)
            in[i] = (((UINT4)mdContext->in[ii+3]) << 24) |
                    (((UINT4)mdContext->in[ii+2]) << 16) |
                    (((UINT4)mdContext->in[ii+1]) << 8) |
                    ((UINT4)mdContext->in[ii]);
          Transform (mdContext->buf, in);
          mdi = 0;
        }
      }
    }
    
    void MD5Final (MD5_CTX *mdContext)
    {
      UINT4 in[16];
      int mdi;
      unsigned int i, ii;
      unsigned int padLen;
    
      /* save number of bits */
      in[14] = mdContext->i[0];
      in[15] = mdContext->i[1];
    
      /* compute number of bytes mod 64 */
      mdi = (int)((mdContext->i[0] >> 3) & 0x3F);
    
      /* pad out to 56 mod 64 */
      padLen = (mdi < 56) ? (56 - mdi) : (120 - mdi);
      MD5Update (mdContext, PADDING, padLen);
    
      /* append length in bits and transform */
      for (i = 0, ii = 0; i < 14; i++, ii += 4)
        in[i] = (((UINT4)mdContext->in[ii+3]) << 24) |
                (((UINT4)mdContext->in[ii+2]) << 16) |
                (((UINT4)mdContext->in[ii+1]) << 8) |
                ((UINT4)mdContext->in[ii]);
      Transform (mdContext->buf, in);
    
      /* store buffer in digest */
      for (i = 0, ii = 0; i < 4; i++, ii += 4) {
        mdContext->digest[ii] = (unsigned char)(mdContext->buf[i] & 0xFF);
        mdContext->digest[ii+1] =
          (unsigned char)((mdContext->buf[i] >> 8) & 0xFF);
        mdContext->digest[ii+2] =
          (unsigned char)((mdContext->buf[i] >> 16) & 0xFF);
        mdContext->digest[ii+3] =
          (unsigned char)((mdContext->buf[i] >> 24) & 0xFF);
      }
    }
    
    /* Basic MD5 step. Transform buf based on in.
     */
    static void Transform (UINT4 *buf, UINT4 *in)
    {
      UINT4 a = buf[0], b = buf[1], c = buf[2], d = buf[3];
    
      /* Round 1 */
    #define S11 7
    #define S12 12
    #define S13 17
    #define S14 22
      FF ( a, b, c, d, in[ 0], S11, 3614090360); /* 1 */
      FF ( d, a, b, c, in[ 1], S12, 3905402710); /* 2 */
      FF ( c, d, a, b, in[ 2], S13,  606105819); /* 3 */
      FF ( b, c, d, a, in[ 3], S14, 3250441966); /* 4 */
      FF ( a, b, c, d, in[ 4], S11, 4118548399); /* 5 */
      FF ( d, a, b, c, in[ 5], S12, 1200080426); /* 6 */
      FF ( c, d, a, b, in[ 6], S13, 2821735955); /* 7 */
      FF ( b, c, d, a, in[ 7], S14, 4249261313); /* 8 */
      FF ( a, b, c, d, in[ 8], S11, 1770035416); /* 9 */
      FF ( d, a, b, c, in[ 9], S12, 2336552879); /* 10 */
      FF ( c, d, a, b, in[10], S13, 4294925233); /* 11 */
      FF ( b, c, d, a, in[11], S14, 2304563134); /* 12 */
      FF ( a, b, c, d, in[12], S11, 1804603682); /* 13 */
      FF ( d, a, b, c, in[13], S12, 4254626195); /* 14 */
      FF ( c, d, a, b, in[14], S13, 2792965006); /* 15 */
      FF ( b, c, d, a, in[15], S14, 1236535329); /* 16 */
    
      /* Round 2 */
    #define S21 5
    #define S22 9
    #define S23 14
    #define S24 20
      GG ( a, b, c, d, in[ 1], S21, 4129170786); /* 17 */
      GG ( d, a, b, c, in[ 6], S22, 3225465664); /* 18 */
      GG ( c, d, a, b, in[11], S23,  643717713); /* 19 */
      GG ( b, c, d, a, in[ 0], S24, 3921069994); /* 20 */
      GG ( a, b, c, d, in[ 5], S21, 3593408605); /* 21 */
      GG ( d, a, b, c, in[10], S22,   38016083); /* 22 */
      GG ( c, d, a, b, in[15], S23, 3634488961); /* 23 */
      GG ( b, c, d, a, in[ 4], S24, 3889429448); /* 24 */
      GG ( a, b, c, d, in[ 9], S21,  568446438); /* 25 */
      GG ( d, a, b, c, in[14], S22, 3275163606); /* 26 */
      GG ( c, d, a, b, in[ 3], S23, 4107603335); /* 27 */
      GG ( b, c, d, a, in[ 8], S24, 1163531501); /* 28 */
      GG ( a, b, c, d, in[13], S21, 2850285829); /* 29 */
      GG ( d, a, b, c, in[ 2], S22, 4243563512); /* 30 */
      GG ( c, d, a, b, in[ 7], S23, 1735328473); /* 31 */
      GG ( b, c, d, a, in[12], S24, 2368359562); /* 32 */
    
      /* Round 3 */
    #define S31 4
    #define S32 11
    #define S33 16
    #define S34 23
      HH ( a, b, c, d, in[ 5], S31, 4294588738); /* 33 */
      HH ( d, a, b, c, in[ 8], S32, 2272392833); /* 34 */
      HH ( c, d, a, b, in[11], S33, 1839030562); /* 35 */
      HH ( b, c, d, a, in[14], S34, 4259657740); /* 36 */
      HH ( a, b, c, d, in[ 1], S31, 2763975236); /* 37 */
      HH ( d, a, b, c, in[ 4], S32, 1272893353); /* 38 */
      HH ( c, d, a, b, in[ 7], S33, 4139469664); /* 39 */
      HH ( b, c, d, a, in[10], S34, 3200236656); /* 40 */
      HH ( a, b, c, d, in[13], S31,  681279174); /* 41 */
      HH ( d, a, b, c, in[ 0], S32, 3936430074); /* 42 */
      HH ( c, d, a, b, in[ 3], S33, 3572445317); /* 43 */
      HH ( b, c, d, a, in[ 6], S34,   76029189); /* 44 */
      HH ( a, b, c, d, in[ 9], S31, 3654602809); /* 45 */
      HH ( d, a, b, c, in[12], S32, 3873151461); /* 46 */
      HH ( c, d, a, b, in[15], S33,  530742520); /* 47 */
      HH ( b, c, d, a, in[ 2], S34, 3299628645); /* 48 */
    
      /* Round 4 */
    #define S41 6
    #define S42 10
    #define S43 15
    #define S44 21
      II ( a, b, c, d, in[ 0], S41, 4096336452); /* 49 */
      II ( d, a, b, c, in[ 7], S42, 1126891415); /* 50 */
      II ( c, d, a, b, in[14], S43, 2878612391); /* 51 */
      II ( b, c, d, a, in[ 5], S44, 4237533241); /* 52 */
      II ( a, b, c, d, in[12], S41, 1700485571); /* 53 */
      II ( d, a, b, c, in[ 3], S42, 2399980690); /* 54 */
      II ( c, d, a, b, in[10], S43, 4293915773); /* 55 */
      II ( b, c, d, a, in[ 1], S44, 2240044497); /* 56 */
      II ( a, b, c, d, in[ 8], S41, 1873313359); /* 57 */
      II ( d, a, b, c, in[15], S42, 4264355552); /* 58 */
      II ( c, d, a, b, in[ 6], S43, 2734768916); /* 59 */
      II ( b, c, d, a, in[13], S44, 1309151649); /* 60 */
      II ( a, b, c, d, in[ 4], S41, 4149444226); /* 61 */
      II ( d, a, b, c, in[11], S42, 3174756917); /* 62 */
      II ( c, d, a, b, in[ 2], S43,  718787259); /* 63 */
      II ( b, c, d, a, in[ 9], S44, 3951481745); /* 64 */
    
      buf[0] += a;
      buf[1] += b;
      buf[2] += c;
      buf[3] += d;
    }
    
    /*
     **********************************************************************
     ** End of md5.c                                                     **
     ******************************* (cut) ********************************
     */
    
    /* Computes the message digest for string inString.
       Prints out message digest, a space, the string (in quotes) and a
       carriage return.
     */
    static void MDString (inString)
    char *inString;
    {
      MD5_CTX mdContext;
      unsigned int len = (unsigned int)strlen (inString);
    
      MD5Init (&mdContext);
      MD5Update (&mdContext, inString, len);
      MD5Final (&mdContext);
    }
    
    #include <stdio.h>
    #include <string.h>
    
    // test
    int main (void)
    {
       char in[256];
       MD5_CTX ctx;
       int i;
    
       // string eingeben
       printf ("just enter something: ");
       scanf ("%s", in); 
    
       // md5 machen
       MD5Init (&ctx);
       MD5Update (&ctx, in, (unsigned int)strlen(in));
       MD5Final (&ctx);
    
       // ausgeben
       printf ("MD5 hash of %s is: ", in);
       for (i = 0; i < 16; i++)
          printf ("%02x", ctx.digest[i]);
       puts ("");
    }
    

    ^^das geld spende einer gemeinnützigen organisation (nein, nicht an die FDP).
    🙂



  • ^^ ach so, die funktion 'MDString' schmeiss raus, ist uralt-stil und wird sowieso nicht gebraucht.
    🙂



  • hi ;fricky

    danke für den code...

    funktioniert nur leider nicht 😞

    mal wieder millionen von fehler...

    main.cpp|139|error: variable or field `MD5Init' declared void|
    main.cpp|139|error: `mdContext' was not declared in this scope|
    main.cpp|140|error: expected `,' or `;' before "MD5_CTX"|
    main.cpp|141|error: expected unqualified-id before '{' token|
    main.cpp||In function `void MD5Update(MD5_CTX*, unsigned char*, unsigned int)':|
    main.cpp|94|error: too many arguments to function `void Transform()'|
    main.cpp|178|error: at this point in file|
    main.cpp||In function `void MD5Final(MD5_CTX*)':|
    main.cpp|94|error: too many arguments to function `void Transform()'|
    main.cpp|208|error: at this point in file|
    main.cpp||In function `void Transform(UINT4*, UINT4*)':|
    main.cpp|233|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|234|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|236|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|237|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|239|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|240|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|242|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|243|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|244|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|246|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|247|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|255|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|256|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|258|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|259|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|261|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|262|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|264|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|265|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|267|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|268|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|270|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|277|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|278|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|280|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|281|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|283|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|284|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|286|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|287|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|289|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|290|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|292|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|299|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|301|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|302|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|304|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|305|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|306|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|308|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|309|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|311|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|312|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp|314|warning: this decimal constant is unsigned only in ISO C90|
    main.cpp||In function `int main()':|
    main.cpp|349|error: `MD5Init' cannot be used as a function|
    main.cpp|350|error: invalid conversion from `char*' to `unsigned char*'|
    main.cpp|350|error:   initializing argument 2 of `void MD5Update(MD5_CTX*, unsigned char*, unsigned int)'|
    main.cpp|94|warning: 'void Transform()' declared `static' but never defined|
    main.cpp|225|warning: 'void Transform(UINT4*, UINT4*)' defined but not used|
    ||=== Build finished: 11 errors, 46 warnings ===|
    

    Rausgeschmissen hab ich

    static void MDString (inString)
    char *inString;
    {
      MD5_CTX mdContext;
      unsigned int len = (unsigned int)strlen (inString);
    
      MD5Init (&mdContext);
      MD5Update (&mdContext, inString, len);
      MD5Final (&mdContext);
    }
    

    Mit funktionierts auch nicht 😞

    gruß

    B



  • MD5String muss auf jeden fall raus. ändere den kopf von MD5Init von...

    void MD5Init (mdContext)
    MD5_CTX *mdContext;
    

    in das...

    void MD5Init (MD5_CTX *mdContext)
    

    ^^schon müssten ein paar fehlerchen weg sein.
    🙂



  • hi ;fricky,

    danke für deine mühe,

    nur leider folgt direkt der nächste fehler 😞

    main.cpp||In function `void MD5Update(MD5_CTX*, unsigned char*, unsigned int)':|
    main.cpp|94|error: too many arguments to function `void Transform()'|
    main.cpp|177|error: at this point in file|
    main.cpp||In function `void MD5Final(MD5_CTX*)':|
    main.cpp|94|error: too many arguments to function `void Transform()'|
    main.cpp|207|error: at this point in file|
    main.cpp||In function `void Transform(UINT4*, UINT4*)':|
    
    main.cpp||In function `int main()':|
    main.cpp|349|error: invalid conversion from `char*' to `unsigned char*'|
    main.cpp|349|error:   initializing argument 2 of `void MD5Update(MD5_CTX*, unsigned char*, unsigned int)'|
    main.cpp|94|warning: 'void Transform()' declared `static' but never defined|
    main.cpp|224|warning: 'void Transform(UINT4*, UINT4*)' defined but not used|
    ||=== Build finished: 6 errors, 46 warnings ===|
    

    gruss

    B



  • kein problem, weiter geht's. such die zeilen:

    /* forward declaration */
    void Transform ();
    

    und ändere sie in:

    /* forward declaration */
    void Transform (UINT4 *buf, UINT4 *in);
    

    🙂



  • Du bist n feiner kerl,

    danke das du dir so viel mühe gibst.

    also ich hab jetzt

    static void Transform ();
    

    in

    static void Transform (UINT4 *buf, UINT4 *in);
    

    geändert.

    jetzt kommt folgender Fehler: 😡

    main.cpp||In function `void Transform(UINT4*, UINT4*)':|
    
    main.cpp||In function `int main()':|
    main.cpp|349|error: invalid conversion from `char*' to `unsigned char*'|
    main.cpp|349|error:   initializing argument 2 of `void MD5Update(MD5_CTX*, unsigned char*, unsigned int)'|
    ||=== Build finished: 2 errors, 44 warnings ===|
    

    Fehler verweist auf

    MD5Update (&ctx, in, (unsigned int)strlen(in));
    

    Gruss

    B



  • BigL schrieb:

    Du bist n feiner kerl,

    ja, das bin ich wirklich. *fg*
    nun, dann gehen wir mal in die 'main'-funktion und machen aus der zeile:

    MD5Update (&ctx, in, (unsigned int)strlen(in));
    

    das...

    MD5Update (&ctx, (unsigned char*)in, (unsigned int)strlen(in));
    

    🙂



  • ahaa jaaa!

    endlich nach einer million versuche!

    ES FUNKTIONIERT!

    DANKE ;fricky!!!

    wieso das aber auch immer so kompliziert sein muss 🙂

    hätte ich mit VC++ da keine probleme gehabt?

    gruss

    B

    PS: an welche org soll ich das geld nun schicken? 😃



  • BigL schrieb:

    hätte ich mit VC++ da keine probleme gehabt?

    doch, auch. das ++ suckt rum, ohne hätte es gleich beim ersten oder zweiten versuch geklappt.

    BigL schrieb:

    PS: an welche org soll ich das geld nun schicken?

    irgendwas humanitäres o.ä, amnesty international, kinderhilfswerk, greenpeace oder so, such dir was aus. und wehe dir, die kohle geht bei denen nicht ein. ich rufe da an *fg*
    🙂



  • ja danke wirklich.

    ich werd das machen, im ernst.

    ich sag dir dann bescheid wohin es ging 🙂

    PS: kannst du mir noch schnell sagen wie ich den md5hash in ne variable packen kann?

    (prinzipiell wollte ich das ja damit ich md5 hash in meiner applikation vergleichen kann)

    gruss

    B



  • BigL schrieb:

    PS: kannst du mir noch schnell sagen wie ich den md5hash in ne variable packen kann?

    das ergebnis ist in MD5_CTX.digest[], 16 unsigned char's (siehste z.b. an der ausgabe in 'main'). kannst es z.b. mit 'memcpy' o,ä. irgendwo hinkopieren. ansonsten arbeite mal ein C-tutorial durch, damit du überhaupt weisst, was du da machst.
    🙂



  • hehe

    ja ich weiss schon was ich da mach

    sagen wir so ich kann die sprache besser lesen als schreiben 🙂

    sowas hab ich noch nie gemacht 😞

    danke für die anhaltspunkte.

    ich werds sicher rauskriegen.

    das kann ja jetzt wohl nichtmehr sooo schwer sein.

    danke nochmal vielmals für deine hilfe

    gruss

    B


Anmelden zum Antworten