用C++實作凱撒密碼的加密解密算法
在密碼學中,恺撒密碼(英語:Caesar cipher),或稱恺撒加密、恺撒變換、變換加密,是一種最簡單且最廣為人知的加密技術。
它是一種替換加密的技術,明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。
例如,當偏移量是3的時候,所有的字母A将被替換成D,B變成E,以此類推。這個加密方法是以羅馬共和時期恺撒的名字命名的,當年恺撒曾用此方法與其将軍們進行聯系。
主要注意字元的轉換
#include<iostream>
#include<stdio.h>
#include<string.h>
#define N=100
using namespace std;
int main()
{
char str[100];
int choose;//選擇加密解密
int k;//每次移動的位數
cout<<"輸入密鑰:";
cin>>k;
do
{
cout<<"請輸入選擇:1為加密,2為解密:";
cin>>choose;
if(choose==1)
{
cout<<"輸入需要加密的明文:";
cin>>str;
for(int i=0;i<strlen(str);i++)
{
if(str[i]>='a'&&str[i]<='z')
str[i]=((str[i]-'a'+k)%26+'a');
else if(str[i]>='A'&&str[i]<='Z')
str[i]=((str[i]-'A'+k)%26+'A');
}
cout<<str;
}
else if(choose==2)
{
cout<<"輸入需要解密的密文:";
cin>>str;
for(int i=0;i<strlen(str);i++)
{
if(str[i]>='a'&&str[i]<='z')
str[i]=((str[i]-'a'+26-k)%26+'a');
else if(str[i]>='A'&&str[i]<='Z')
str[i]=((str[i]-'A'+26-k)%26+'A');
}
cout<<str;
}
else if(choose!=1&&choose!=2)
cout<<"ERROR";
}while(choose!=1&&choose!=2);
return 0;
}