Verschlüsselung (Blowfish)



  • Hallo!

    Ich wollte eine Datei mit Blowfish verschlüsseln.
    Dazu habe ich mir einen Blowfish Algorithmus geladen.

    Dieser funktioniert so:

    char a = 'A',
    	  b = 'B';
    
    unsigned long L = (unsigned long)a;
    unsigned long R = (unsigned long)b;
    
    // Initialisierung.
    BLOWFISH_CTX ctx;
    Blowfish_Init (&ctx, (unsigned char*)"TestKey", 7);
    
    // Encrypt
    Blowfish_Encrypt(&ctx, &L, &R);
    
    // Decrypt.
    Blowfish_Decrypt(&ctx, &L, &R);
    
    printf("L=%c ; R=%c", (char)L, (char)R); // L=A ; R=B
    

    Nun möchte ich eine Datei einlesen, encrypten und das Resultat wieder in die Datei schreiben.

    Mein Ansatz:

    int len;
    FILE * fp;
    char * buffer;
    
    fp = fopen("encrypt.txt", "r");
    fseek(fp, 0, SEEK_END);
    len = ftell(fp);
    buffer = (char*)aMalloc(len/sizeof(int)+1);
    fread(buffer, sizeof(char), len/sizeof(char), fp);
    
    unsigned long L, R;
    BLOWFISH_CTX ctx;
    Blowfish_Init (&ctx, (unsigned char*)"TestKey", 7);
    
    for( int i = 0; buffer[i] != NULL; i += 2 ) {
    	L = (unsigned long)buffer[i];
    	R = (unsigned long)buffer[i + 1];
    	Blowfish_Encrypt(&ctx, &L, &R);
    	buffer[i] = (char)L;
    	buffer[i + 1] = (char)R;
    }
    
    printf("%s", (char*)buffer);
    

    Das ist mehr kopiert als selbst geschrieben...

    Zwar wird jetzt der Text ausgeben, aber wenn ich die Zeichen zum Beispiel in eine neue txt Datei kopieren will, gehen sie verloren; wenn ich sie mit Unicode speichere, kann ich sie mit fopen nicht wieder öffnen.

    Ich bin ein kompletter Neuling, deswegen weiß ich nicht, was ich machen soll!

    Allgemein habe ich tagelang das Internet durchsucht nach Twofish und Serpent Algorithmen, weil ich das ursprünglich wollte, aber alle, die ich gefunden habe, habe ich entweder nicht verstanden oder sie waren fehlerhaft.
    Hat jemand vielleicht sonst eine gute Alternative?

    Danke im Voraus.


Anmelden zum Antworten