md5 umwandeln



  • Wie kann ich aus der digest Zeichekette eine normale lesbare Zeichenkette machen?
    Bei der Ausgabe mit printf geht es durch "%02X". Diese Ausgabe möchte ich in einer separaten zeichenkette haben zur weiterverarbeitung.

    #ifndef _CRT_SECURE_NO_DEPRECATE
    #define _CRT_SECURE_NO_DEPRECATE 1
    #endif
    
    #include <stdio.h>
    
    #include "md5.h"
    
    int main( void )
    {
        int i;
        unsigned char digest[16];
        char rx_string[] = "cha;1213692808693";
        char secret[30] = "test";
        char test[16];
    
        printf( "%s Länge %d\n", secret, strlen(secret));	
    
        strncpy(secret+4, rx_string+4,  13 );
    
        printf( "%s Länge %d\n", secret, strlen(secret));
    
        md5( (unsigned char *) secret, 22, digest );
    
        printf( "md5 %s\n", digest);
    
        printf( "MD5('%s') = \n", secret );
    
        for( i = 0; i < 16; i++ )
            printf( "%02X", digest[i] );
    
        printf( "\n\n" );
    
    #ifdef WIN32
        printf( "  Press Enter to exit this program.\n" );
        fflush( stdout ); getchar();
    #endif
    
        return( 0 );
    }
    


  • snprintf()



  • danke für den tipp

    ich hab es so versucht, dann stürtr es aber ab

    char test[32];
    for( i = 0; i < 16; i++ )
           snprintf( test[i], 32, "%02X", digest[i] );
    


  • Hallo,

    ein Zeichen mehr für test (für die Nullterminierung), und dann daran denken, snprintf den richtigen Zeiger zu übergeben:

    char test[33] = {0,};
    
    for( i = 0; i < 16; i++ )
           snprintf( test + i * 2, 2, "%02X", digest[i] );
    

    MfG,

    Probe-Nutzer


Anmelden zum Antworten