我正在为 Vigenere Cipher 编写一个程序。但我不知道如何让我的密钥重复直到我的纯文本结束。现在我的代码所做的只是加密与我的密钥的字母数量相等的字母。例如,我输入“dog”的密钥,我的纯文本是“catdog”,它给了我一个“fozdyw”的加密文本。这意味着它只加密前 3 个字母。
这是我的一些加密代码:
for (int j=0, k=0; j < strlen(text); j++, k++)
{
if((text[j] >= 'A') && (text[j] <= 'Z'))
text[j] = ((text[j] -'A') + key[k]) % 26 +'A';
if((text[j] >= 'a') && (text[j] <= 'z'))
text[j] = ((text[j] -'a') + key[k]) % 26 +'a';
printf("%c", text[j]);
}
我究竟做错了什么?正确的做法应该是什么?