Function verändern
-
hi leute,
ich habe diese function hier:void encrypt(FILE *in, FILE *out, enum modeOfOperation mode) { /* the non-expanded keySize */ enum keySize size = SIZE_32; /* the AES input/output */ unsigned char plaintext[16] = {0}; unsigned char input[16] = {0}; unsigned char output[16] = {0}; unsigned char ciphertext[16] = {0}; unsigned char IV[16] = {0}; /* the AES key */ unsigned char key[32] = {0x0}; /* char firstRound */ char firstRound = 1; long int fileSize; size_t read; int i; if (in != NULL) { fseek(in,0,SEEK_END); fileSize = ftell(in); fseek(in,0,SEEK_SET); /* add the file header */ fwrite(&mode, sizeof(mode), 1, out); fwrite(&fileSize, sizeof(fileSize), 1, out); while ((read = fread(plaintext, sizeof(unsigned char), 16, in)) > 0) { if (mode == OFB) { if (firstRound) { aes_encrypt(IV, output, key, size); firstRound = 0; } else { aes_encrypt(input, output, key, size); } for (i = 0; i < 16; i++) { ciphertext[i] = plaintext[i] ^ output[i]; } fwrite(ciphertext, sizeof(unsigned char), read, out); memcpy(input, output, 16*sizeof(unsigned char)); } } } }wie ihr seht, benutzt die function als eingang eine datei und als ausgang auch,
jetzt will ich aber machen das der unput ein char array ist und der output auch,
also etwa so :functio(char input){
return output;
}Mfg Lukas3
-
Könnte es sein das du C und nicht C++ haben willst?
Ansonsten würde ich dir eh raten mit std::string zu arbeiten und die Funktion in der folgenden Form umzusetzen:
std::string funktion(const std::string);Wenn du mit C-Strings (char*/char[]) arbeitest ist es besser sowohl den Ausgabepuffer wie auch den Eingabepuffer zu übergeben, da du sonst in der Funktion Speicher allozieren musst den du außerhalb freigeben müsstest.
In dem Fall wäre
void funktion(char*, char*)der Funktion
char* funktion(char*)vorzuziehen!
cu André