1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
569
569
EMPFEHLEN
-
Hallo,
ich habe die sha1.c von http://www.packetizer.com/security/sha1/ in mein Projekt eingebunden und eine Function erstellt, die mir aus einer Datei, eine Checksumme erstellen soll. Das klappt auch super, nur will ich die Checksumme gleich prüfen und hier stosse ich auf ein Datentyp-Problem - und an die Grenzen meines C++ Wissens.
Hier mal die Function:
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
bool checkEAChecksum() { SHA1 sha; // SHA-1 class FILE *fp; // File pointer for reading files char c; // Character read from file unsigned message_digest[5]; // Message digest from "sha" if (!(fp = fopen("X:\\DateiDieGeprueftWerdenSoll.txt","rb"))) { AfxMessageBox(_T("Fehler! DateiDieGeprueftWerdenSoll.txt wurde nicht gefunden!"), MB_OK | MB_ICONERROR ); return (false); } /* * Reset the SHA1 object and process input */ sha.Reset(); c = fgetc(fp); while(!feof(fp)) { sha.Input(c); c = fgetc(fp); } if (!sha.Result(message_digest)) { AfxMessageBox(_T("sha: could not compute sha1 checksum"), MB_OK | MB_ICONERROR ); } else { FILE *stream ; if((stream = freopen("d:\\file.txt", "w", stdout)) == NULL) exit(-1); printf( "%08x%08x%08x%08x%08x", message_digest[0], message_digest[1], message_digest[2], message_digest[3], message_digest[4]); printf("\n"); } return(false); }
Ich würde jetzt gerne den Output, was ich mit printf erzeuge (mit der gleichen Formatierung!), in einen CString packen, damit ich ihn vergleichen kann. Wie kriege ich das hin?
Ich wäre dankbar für jegliche Tips!
-
06.10.10 09:07 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Erstmal ist deine Schleife zum Einlesen "ungünstig", da sie endlos laufen wird wenn ein Fehler auftritt (ferror(fp) == true ist).
Allerdings ist es nicht gerade effizient Zeichen einzeln einzulesen, man liest normalerweise gleich einen ganzen Block in einen Puffer (mit fread).Code cpp:1 2 3 4 5
int c; while ((c = fgetc(fp)) != EOF) { sha.Input(c); } if (ferror(fp)) /* ERROR: Datei nicht vollständig gelesen */
Einen CString kannst du ebenso formatieren wie mit printf auch. Btw, warum verwendest du denn freopen und nicht einfach fprintf(stdout, "..", ...)?
GrußCode cpp:1 2 3 4 5 6
CString str; str.Format("%08x%08x%08x%08x%08x", message_digest[0], message_digest[1], message_digest[2], message_digest[3], message_digest[4]);
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Ähnliche Themen
-
Problem mit Datentyp
Von spirou25 im Forum ASPAntworten: 1Letzter Beitrag: 05.02.10, 12:01 -
md5-Hash interpretations Problem?
Von Giovanni im Forum PHPAntworten: 21Letzter Beitrag: 06.08.08, 10:21 -
java MD5-Hash vs. mysql MD5-Hash
Von xrax im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 2Letzter Beitrag: 01.07.08, 15:20 -
Problem mit md5 Hash
Von Berrry im Forum PHPAntworten: 4Letzter Beitrag: 22.02.08, 12:32 -
Access Problem mit Datentyp
Von SirNeo im Forum Office-AnwendungenAntworten: 5Letzter Beitrag: 15.02.02, 09:45





Zitieren

Login






