Сначала я получил свой код, чтобы сделать следующее:
ключ: ab Открытый текст: проверить меня Зашифрованный текст: Tfsu ne
Я, конечно, пытаюсь получить свой ключ, чтобы пропустить место, (Tfsu mf), поэтому я попытался добавить дополнительный счетчик (m-counter) для моего ключа, чтобы убедиться, что он не увеличивается после каждой итерации по открытому тексту. В результате, однако, теперь я получаю:
ключ: ab Открытый текст: проверьте меня Зашифрованный текст: Uftu nf
Так что теперь он действует так, как будто мой ключ - bb.
Может ли кто-нибудь объяснить 'logi c', почему этот второй l oop вызывает это изменение в выводе, вместо того, чтобы увеличиваться только тогда, когда символ будет зашифрован (т.е. является алфавитом c)?
for (int m = 0; m<l; m++)
{
for(int e = 0; e<z; e++)
{
if (islower(plaintext[e]))
{
ciphertext [e] = (plaintext [e] + shift `(argv[1][m%l]) - 'a') %26 + 'a';`
}
if (isupper(plaintext[e]))
{
ciphertext [e] = (plaintext [e] + shift (argv[1][m%l]) - 'A') %26 + 'A';
}
}
}
for (int q = 0; q<z;q++)
{
if (!isalpha(plaintext[q]) )
{
ciphertext [q] = (plaintext [q]);
}
}
printf ("ciphertext: ");
for (int i = 0; i<z; i++)
{
printf ("%c", ciphertext [i]);
}
printf("\n");