コードを機能させようとして、いくつかの問題が発生しています。ほとんど正しいデータを出力しますが、正しくループしていない可能性がありますか? アルファベットでキーを繰り返すとは思いません。すべて小文字で、26 を超えません。
void vigenereEncrypt( const char plaintext[], char ciphertext[], const char key[] )
{
int idx;
int j;
for( idx = 0, j = 0; idx <= strlen(plaintext); idx++ )
{
if ( CHAR_OUT_OF_RANGE(plaintext[idx]) )
{
ciphertext[idx] = plaintext[idx];
}
else
{
ciphertext[idx] = plaintext[idx];
ciphertext[idx] += key[j] - MIN_ASCII_VALUE;
if (ciphertext[idx] >= MAX_ASCII_VALUE) ciphertext[idx] += -MAX_ASCII_VALUE + MIN_ASCII_VALUE - 1;
}
j = (j + 1) % strlen(key);
}
ciphertext[idx] = 0;
}
たとえば、jerry のキーを使用して平文のトナーを入力すると、出力は csevé になります。csevpに変更する必要があります