Я пытаюсь зашифровать сообщение из текстового файла, используя бит-мутную операцию XOR слева и справа символов с двумя конкретными ключами из другого файла (keys.txt), но я получаю нечитаемый код перед оригинальный текстовый файл (ничего не изменился), что неверно. Я использую два текстовых файла:Как зашифровать текстовый файл, используя бит-мудрый XOR?
1) input.txt - содержащий сообщение, которое будет шифроваться
2) Keys.txt - Это содержит два символа, которые делают операцию XOR к каждому символу на входе .txt (символ 1 является ключом 1 и 2 символов является ключом 2)
следующий код в моей программе:
str[i]=str[i]^str2[2];
str[++i]=str[i]^str2[1];
break;
является строка кода, предполагают, чтобы выполнять операцию XOR
Примечание Мой желаемый результат должен выглядеть примерно так:!
м @ # ЭМИ (> 9S (@) H # ФМН # XGmmmmU, H Gmr (DMI "VMD, F (S XMU% DMM "С> U (S>, О) 9I (9Т U D>, М, Е; @ # В (ГМУ% D4, S (?:! @ $ U $ O *" ИМУ% DMR% Н # Р ! D`V $ M! 4N8.N Dm @ # EmK "H # 9I (+ mmmm) @ # B (f
Может кто-нибудь уточнить проблему, с которой я столкнулся?
Пользователь должен ввести:
gcc myProgram.c
./a.out e input.txt keys.txt
(Электронный просто стоит для шифрования)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int args, char *argc[]){
int i;
int len=0;
char str[1024];
char str2[2];
FILE *finp;
FILE *keyFile;
if (strcmp(argc[1], "e") == 0)
{
if ((finp = fopen(argc[2],"r")) == NULL)
{
printf("Could Not Open file %s\n", argc[2]);
exit(1);
}
if ((keyFile = fopen(argc[3],"r")) == NULL)
{
printf("Could Not Open file %s\n", argc[3]);
exit(1);
}
while((fgets(str,1024,finp)!=NULL)&(fgets(str2,2,keyFile)!=NULL))
{
printf("%c\n %c",str2[1],str2[2]);
/* *** START CODE THAT USES INPUT.TXT FILE & KEYS.TXT *** */
len = strlen(str);
for(i=0;i<len;i++)
{
str[i]=str[i]^str2[2];
str[++i]=str[i]^str2[1];
break;
}
}
printf("%s\n", str);
fclose(finp);
return 0;
}
else
{
printf("SORRY!");
}
Не вызывайте это шифрование. :-) –
Это шифрование, хотя и очень слабое. Это шифр сдвига (Цезарский шифр). –