J'ai développé un algorithme de chiffrement qui prend des caractères par des textes de caractères à partir d'un fichier .txt et les crypte, puis les réécrit dans un autre fichier .txt. Le problème est lorsque je lis le fichier crypté, un caractère comme signe de flèche agit comme EOF et ma boucle se termine avant l'EOF d'origine. Voici mon code:Pourquoi la variable char non signée contient-elle EOF?
static void ECB_ENCRYPTION(void)
{
uint8_t i = 0, j = 0, c, buf1[16]
uint8_t plain_text[16];
// File pointers for file operations.
FILE *f, *f1;
// Encrypts the file [plaintext.txt].
f = fopen("plaintext.txt", "r");
f1 = fopen("ciphertext.txt", "w");
while(1)
{
i = 0;
while(i < 16)
{
c = getc(f);
if(feof(f))
{
break;
}
else
{
plain_text[i] = c;
++i;
}
}
if(i != 16)
{
while(i < 16)
{
plain_text[i] = ' ';
++i;
}
}
// Encrypts plain text.
AES128_ENCRYPT(plain_text, buf1);
i = 0;
while(i < 16)
{
putc(buf1[i], f1);
++i;
}
if(feof(f))
break;
}
fclose(f);
fclose(f1);
}
static void ECB_DECRYPTION(void)
{
uint8_t i = 0, j = 0, c, buf1[16];
uint8_t cipher_text[16];
// File pointers for file operations.
FILE *f, *f1;
// Encrypts the file [plaintext.txt].
f = fopen("ciphertext.txt", "r");
f1 = fopen("decryptedtext.txt", "w");
while(1)
{
i = 0;
while(i < 16)
{
c = getc(f);
if(feof(f))
{
break;
}
else
{
cipher_text[i] = c;
++i;
}
}
if(feof(f))
break;
// Decrypts cipher text.
AES128_DECRYPT(cipher_text, buf1);
i = 0;
while(i < 16)
{
putc(buf1[i], f1);
++i;
}
}
fclose(f);
fclose(f1);
}
double possible de [Représentant EOF dans le code C?] (Http://stackoverflow.com/questions/12389518/representing-eof-in-c-code) – Badda
"signe de flèche" ne ressemble pas à texte. Peut-être devriez-vous traiter le fichier crypté comme binaire et le "fopen" avec "" wb "' et '" rb "'. –
Un exemple des entrées causant les problèmes aiderait. –