我目前正在从事Caesar密码的解密功能。我已经根据编写的加密功能对此模型进行了建模,与解密功能不同,该功能可以正常工作。
我的代码编译没有任何错误并执行。它可以用少于五个字母的单词解密,但不能超过五个字母以及包含两个或两个以上单词的句子解密。
当键的值小于等于12时,也会产生错误的文本输出。为什么会发生这些错误?任何形式的帮助将不胜感激。 预先谢谢你。
#include <stdio.h>
/
}
答案 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