为什么我对凯撒密码的解密功能会产生错误的输出?

时间:2019-04-26 01:55:32

标签: c

我目前正在从事Caesar密码的解密功能。我已经根据编写的加密功能对此模型进行了建模,与解密功能不同,该功能可以正常工作。

我的代码编译没有任何错误并执行。它可以用少于五个字母的单词解密,但不能超过五个字母以及包含两个或两个以上单词的句子解密。

当键的值小于等于12时,也会产生错误的文本输出。为什么会发生这些错误?任何形式的帮助将不胜感激。 预先谢谢你。

#include <stdio.h>

/
}

1 个答案:

答案 0 :(得分:0)

问题是模运算符并不总是返回正值: -1 % 26给出-1,这使您的decrypt_ltr函数返回'a'-'z'范围(或'A'-{{1} } 范围)。例如,使用密钥2解密''Z''时,您将得到:a = 'a' - 'a' - key。然后,您将执行-key,该操作仍然少于-key + 'a'

由于保证您的密钥在1到26之间,因此只需将26添加到'a'值中,就像这样:

(alpha-'A') - key