Я изменяю этот простой qwerty cypher, чтобы он принимал ключ, выбранный пользователями. Могу ли я просто добавить строку, чтобы заменить жестко закодированный ключ, или есть еще что сделать?
Я пытался использоватьстрока из пользовательского ввода scanf.Он работает, когда он жестко запрограммирован, но я бы хотел добавить его как пользователя.
Исходный код, с которым я работаю:
char* ciphertext = "qwertyuiopasdfghjklzxcvbnm";
char input[500];
printf("Enter text: ");
fgets(input, sizeof(input), stdin);
input[strlen(input) - 1] = 0;
int count = strlen(input);
char output[count];
for(int i = 0; i < count; i++) {
int index = ((int) input[i]) - 97;
if(index < 0) {
output[i] = ' ';
}
else {
output[i] = ciphertext[index];
Я заменил:
char* ciphertext = "qwertyuiopasdfghjklzxcvbnm";
на:
char KEY[26];
printf("Enter key text:");
fgets(KEY, sizeof(KEY), stdin);
А такжезамена зашифрованного текста [index] для KEY [index] в последней строке.
Мой код выглядит следующим образом:
char KEY[26];
printf("Enter key text:");
fgets(KEY, sizeof(KEY), stdin);
char input[999];
printf("Enter text: ");
fgets(input, sizeof(input), stdin);
input[strlen(input) - 1] = 0;
int count = strlen(input);
char output[count];
for(int i = 0; i < count; i++) {
int index = ((int) input[i]) - 97;
if(index < 0) {
output[i] = ' ';
}
else {
output[i] = KEY[index];
}
}
output[count] = 0;
printf("output: %s\n", output);
Код запускается, разрешает и вводит для KEY, но затем пропускает, позволяя пользователюдобавить текст для шифрования и распечатать письмо как зашифрованное сообщение.
Когда я использую ключ: qwertyuiopasdfghjklzxcvbnm, он печатает d (13-й ввод), когда я использую: qazwsxedcrfvtgbyhnujmikolp, он печатает y (16-й ввод), когда я использую: qazxswedcvfrtgbnhythholjnjjnjjjnjjnjjnjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjnjjjjj также как: