凯撒密码

--write by zhuwx 2019-06-24 20:58:05 +0800 CST

点击量:14

密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密恺撒变换变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。

#include <iostream>
#include <cmath>
#include <string.h>
using namespace std;

int main()
{
    char a[105],ch;
    int k;
    cout<<'请输入密匙 k :';
    cin>>k;
    do
    {
        cout<<'请选择加密解密,1(加密) or 0(解密):';
    cin>>ch;
    if(ch=='1')
    {
        cout<<'请输入字母明文字符:';
        cin>>a;
        for(int i=0;i<strlen(a);i++)
        {
            if(a[i]<='z'&&a[i]>='a')
            {
                cout<<(char)((a[i]-'a'+k)%26+'a');
            }
            else if(a[i]<='Z'&&a[i]>='A')
            {
                cout<<(char)((a[i]-'A'+k)%26+'A');
            }
        }
    }
    else if(ch=='0')
    {
        cout<<'请输入字母密文字符:';
        cin>>a;
        for(int i=0;i<strlen(a);i++)
        {
            if(a[i]<='z'&&a[i]>='a')
            {
                cout<<(char)((a[i]-'a'+26-k)%26+'a');
            }
            else if(a[i]<='Z'&&a[i]>='A')
            {
                cout<<(char)((a[i]-'A'+26-k)%26+'A');
            }
        }
    }
    else //if(ch!='
')
        cout<<'输入错误请重新输入。。。';
    }while(ch!='1'&&ch!='0');
    return 0;
}