凯撒加密的定义相信大家已经熟悉了
我就在这里分享一下一种新的方法
思路是这样的:
1.先创建一个数组用来记录字母表,然后如果小写字母就先将小写转换为大写字母
2.再用一个公式将index算出
3.最后再将传递的字符加密返回(如果不是字母将原路返回)
源码:
//凯撒加密
char KSencryption(char temp, int key) {
char alphabet[26] = { 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' };
if (temp >= 'a' && temp <= 'z')
{
//大写的字母比小写的字母小32个(ASCII字符)
temp -= 32;
}
//要置换的位置
int index;
if (temp >= 'A' && temp <= 'Z')
{
//A对应0,ASCII为65,那么总体该减去65,用来判断下标
//加入为Z,那么对应的25,假定加上密钥之后为3,那么加密后应为C
index = (key + (temp - 65)) % 25;
//C的下标为2
temp = alphabet[index];
}
return temp;
}
(如果不足请谅解)