一.理论
移位加密又称凯撒密码,是替换密码的一个特例,密钥为移位长度k,明文和密文中的字母都是整数环Z26中的元素。
加密:y=x+kmod 26
解密:x=y-kmod 26
攻击:穷尽密钥和字母频率分析
二.思路
(1)加密
1.明密文可以存储在字符数组中,求出明文长度以便确定加密次数
2.每次加密都是移位操作,而字母在ASCII码表里都是按照顺序排列,所以可以对其ASCII值进行模加法操作。
(2)解密(已知密钥):操作何明文相似,加法改减法
三.源代码
1.加密
#include <iostream>
/**
移位密码
作者:孤羽
*/
using namespace std;
void Shift_encryption(int k,char plain[],char ciphertext[]) //移位加密
{
int i=0;
for(i=0;plain[i]!='\0';i++)
{
if(plain[i]>64&&plain[i]<91)//确定是字母
{
ciphertext[i]=plain[i]+k;
if(ciphertext[i]>90) //保证密文是字母,且大小写不发生改变
ciphertext[i]=ciphertext[i]-26;
}
else if(plain[i]&