我将一个简单的Vigenere cypher应用于输入文件。我用来加密单个char的代码是:
char CryptoModule::Vigenere(char& letter)
{
char encryptedVal = (letter + EncryptKey_[iterator_])%128;
iterator_ = iterator_ == EncryptKey_.size()?0:iterator_+1;
return encryptedVal;
}
然而,模数表现得非常奇怪。当字母为'0'(ASCII字符48)时,密钥为“Chunky Peanut Butter”,第9个字符用于加密(char'a',即ASCII 97),那么可以预期(48 + 97) %128 = 17.但是,返回的结果是-52。有人可以解释为获得预期价值必须采取哪些更正措施?编译器得出的结论是,除法2的正整数的其余部分是负数,这似乎很奇怪。
提前致谢并度过愉快的一天