deepthroat
Erfahrenes Mitglied
Hi.
Einige Probleme / Verbesserungen:
- verwende konstante Referenzen als Argumente (du kopiert unnötig Daten beim jedem Aufruf)
- Fehler falls \0 Zeichen im String enthalten sind bei hashString(std::string)
- duplizierter Code - hashString(std::string) und hashString(std::basic_string<unsigned char> unterscheiden sich fast gar nicht voneinander
- feof ist evtl. erst gesetzt wenn versucht wurde hinter das Ende der Datei zu lesen, falls die Dateigröße ein Vielfaches von 1024 ist, wird der Check innerhalb der while Schleife in hashFile nie aufgerufen
- verarbeite Strings doch ebenfalls wie bei Dateien (im Grunde brauchst du nur eine allgemeine Funktion die auf Daten arbeitet -- da pumpst du Daten rein und finalisierst dann irgendwann mal)
Bsp:
- warum sind init(), append() und transform() public?
Gruß
Einige Probleme / Verbesserungen:
- verwende konstante Referenzen als Argumente (du kopiert unnötig Daten beim jedem Aufruf)
- Fehler falls \0 Zeichen im String enthalten sind bei hashString(std::string)
- duplizierter Code - hashString(std::string) und hashString(std::basic_string<unsigned char> unterscheiden sich fast gar nicht voneinander
- feof ist evtl. erst gesetzt wenn versucht wurde hinter das Ende der Datei zu lesen, falls die Dateigröße ein Vielfaches von 1024 ist, wird der Check innerhalb der while Schleife in hashFile nie aufgerufen
- verarbeite Strings doch ebenfalls wie bei Dateien (im Grunde brauchst du nur eine allgemeine Funktion die auf Daten arbeitet -- da pumpst du Daten rein und finalisierst dann irgendwann mal)
Bsp:
C++:
md5 hash; // ruft init() auf. bzw. initialsiert im Konstruktor
hash.update(std::string("alblual"));
hash.update("asdfa");
char x[] = ...;
hash.update(x);
hash.digest(); // finalisiert und gibt digest zurück
hash.hex_digest(); // gibt einen hex digest zurück
md5 file_hash;
file_hash.update(ifstream("bla.blub"));
// usw.
Gruß
Zuletzt bearbeitet: