tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
409
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mkbm mkbm ist offline Mitglied
    Registriert seit
    Aug 2004
    Beiträge
    17
    Hallo Leute,

    ich habe ein kleines Problem.

    Und zwar habe ich ein Programm das einen MD5 Hash ausgibt. Das sieht so aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    unsigned char hashwert1[16];
    string text1 = "Hallo";
    string output;
            char text2[50];
            strcpy(text2,text1.c_str());
    md5(text2, hashwert1);
        for(int i = 0; i < 16; i++ )
            printf( "%02x", hashwert1[i] );

    Jetzt möchte ich nicht das der Hashcode ausgegeben wird sondern diesen in dem String "output" speichern.
    Ich habe das schon mit "strcpy" und "sprinftf" (über einen Umweg) ausprobiert allerdings erhalte ich nie den Hash sondern entweder komische Zeichen oder etwas ganz anderes.

    Würde mich über jeden Tipp sehr freuen.



    mkbm
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Dazu eignet sich ein ostringstream:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    #include <sstream>
     
    ostringstream ostr;
     
    ostr << hex;
     
    for(int i = 0; i < 16; i++ )
      ostr << static_cast<int>(hashwert1[i]);
     
    string output(ostr.str());
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    mkbm mkbm ist offline Mitglied
    Registriert seit
    Aug 2004
    Beiträge
    17
    Vielen Dank für die schnelle Antwort.

    Das funktioniert auch ganz gut aber irgendwie werden im String einige Nullen weggekürzt.

    Also die Ausgabe sieht so aus.

    Hash mit printf:

    598d4c200461b81522a3328565c25f7c

    ae0ca2c9525396001d68bb366db5b1ad

    Hash im string:

    598d4c20461b81522a3328565c25f7c

    aeca2c952539601d68bb366db5b1ad

    Woran könnte das liegen?

    mkbm
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Ja, führende Nullen werden nicht ausgegeben. So sollte es gehen:
    Code cpp:
    1
    2
    3
    4
    5
    6
    
    #include <iomanip>
     
    ostr << hex << setfill ('0');
     
    for (...)
      ostr << setw(2) << static_cast<int>(...);
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. C Umwandlung
    Von Lucky_Nightmare im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 19.05.06, 19:39
  2. Umwandlung vb 6 in vb.net
    Von drere im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 31.05.05, 17:58
  3. umwandlung
    Von masterjcl im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 23.11.04, 00:26
  4. Umwandlung SDI in MDI
    Von RayCoder im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 12.08.04, 13:08
  5. MP3 Umwandlung zu WAV
    Von crazybob im Forum Audiotechnik, Recording & Audio-Software
    Antworten: 7
    Letzter Beitrag: 12.10.01, 11:28