Я собираюсь зашифровать текстовую строку, используя другую текстовую строку в качестве «ключа» для моего шифрования. По сути, это просто реорганизация символов ASCII.
Ключ дан и плохо структурирован, требует дополнительного программирования. Символы ASCII перечислены в этом ключе с одним символом для каждой строки и соответствующими зашифрованными символами через два индекса.
Это пример "key.txt":
A g
B 9
C ü
D (
E z
...продолжение для всех символов ASCII. Следовательно, шифрование в моей программе приведет к:
"EDABEDA" -> "z(g9z(g"
Когда я делаю шифрование.
Я позволяю программе принимать входную строку и создаю другую строку с символами ключа шифрования.
Я просматриваю каждый символ во входной строке с помощью for-sling. Для каждого символа во входной строке я проверяю, есть ли соответствующий символ в моей строке ключа шифрования. В ключе шифрования я перескакиваю на 4 шага за раз, так как собираюсь шифровать, и мне нужно только сравнить A, B, C, D...
Я использую strcmp(), чтобы найти совпадение. И когда есть совпадение, когда символ во входной строке такой же, как в ключе шифрования, я записываю зашифрованный символ в выходную строку. Зашифрованный символ помещается на два индекса впереди главного символа в ключевой строке.
Предупреждения появляются в функции strcmp().
Вот код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 3000
void encryption(char *input);
int main()
{
char input[] = "EDABEDA";
encryption(input);
}
void encryption(char *input)
{
int length,i,k;
size_t result;
char dicc[1000];
char output[SIZE];
FILE *f;
f = fopen("key.txt","r");
fseek(f, 0, SEEK_END);
length = ftell(f);
fseek(f, 0, SEEK_SET);
result = fread(dicc, 1, length, f);
int lenDic = strlen(dicc);
int lenInp = strlen(input);
for (i = 0 ; i < lenInp ; i++)
{
for (k = 4 ; k < lenDic ; k = k + 4)
{
if (strcmp(input[i],dicc[k]) == 0)
{
output[i] = dicc[k+2];
printf("%c",output[i]);
}
}
}
fclose(f);
}
Я получаю следующие предупреждения, и программа не работает. Любой, кто может помочь мне с этим предупреждением strcmp и знает, как мне изменить мою программу, чтобы она соответствовала ее требованиям?
warning: passing argument 1 of ‘strcmp’ makes pointer from integer without a cast [enabled by default]
if (strcmp(input[i],dicc[k]) == 0)
^
In file included from crypt.c:3:0:
/usr/include/string.h:144:12: note: expected ‘const char *’ but argument is of type ‘char’
extern int strcmp (const char *__s1, const char *__s2)
^
warning: passing argument 2 of ‘strcmp’ makes pointer from integer without a cast [enabled by default]
if (strcmp(input[i],dicc[k]) == 0)
^
In file included from crypt.c:3:0:
/usr/include/string.h:144:12: note: expected ‘const char *’ but argument is of type ‘char’
extern int strcmp (const char *__s1, const char *__s2)
^