字符串上的模数奇怪的行为

时间:2014-02-23 22:49:00

标签: c++ cryptography modulo vigenere

我将一个简单的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的正整数的其余部分是负数,这似乎很奇怪。

提前致谢并度过愉快的一天

0 个答案:

没有答案