当偏移量为11或更大时,解密Caesar密码失败

时间:2017-03-15 19:53:23

标签: c++

我正在做一个解密程序。我一直在寻找并试图解决这个问题,但我什么也看不见。因此,当我解密诸如9adwrqxvni0348&4#9之类的时候它很好,但当我有11或更多的偏移时,它会解密除最后一个字符之外的所有字符。无论过去11的偏移是什么,最后一个字符都是相同的。我刚刚把所有的信都塞进来了,他们工作了。它只是在11之后无效的最后一个数字字符。

for (int count = 0; count < length; count++)
{
    if (msg[count] >= 'a' && msg[count] <= 'z')//Letter wraping
    {
        dmsg += ((msg[count] - 'a' - offset + 26) % 26) + 'a';
    }
    else if (msg[count] >= '0' && msg[count] <= '9')//Number wraping
    {
        dmsg += (abs(msg[count] - '0' - offset + 10) % 10) + '0';
    }       
}

1 个答案:

答案 0 :(得分:-1)

在我看来,当偏移量大于10时,添加10不会在任何等于或小于偏移量与10之差的数字上创建适当的正值。一个解决方法是mod 10偏移量:

var braintree = require("braintree");

var gateway = braintree.connect({
  environment: braintree.Environment.Sandbox,
  merchantId: "replaceWithYourMerchantId",
  publicKey: "replaceWithYourPublicKey",
  privateKey: "replaceWithYourPrivateKey"
});