入力ファイルに単純な Vigenere cypher を適用しています。単一の文字を暗号化するために使用するコードは次のとおりです。
char CryptoModule::Vigenere(char& letter)
{
char encryptedVal = (letter + EncryptKey_[iterator_])%128;
iterator_ = iterator_ == EncryptKey_.size()?0:iterator_+1;
return encryptedVal;
}
ただし、モジュロは非常に奇妙な動作をしています。文字が '0' (ASCII char 48) で、キーが「Chunky Peanut Butter」で、9 番目の文字が暗号化に使用される場合 (char 'a'、ASCII 97)、(48 + 97) が期待されます。 %128 = 17. ただし、返される結果は -52 です。誰かが期待値を得るために何を修正しなければならないか説明してもらえますか? コンパイラが、除算 2 の残りの正の整数が負であるという結論に達したのは非常に奇妙に思えます。
前もって感謝し、良い一日を