简单的编码解码及程序实现

凯撒密码

  • 介绍

首先我们先了解什么是凯撒密码?

凯撒密码是一种替换加密方法,举个简单的例子:

明文:holle world

密文:ipmmf xpsme

就是简单的将字母表往后移动一位。

对应上图的编码表我们可以很容易得出加密or解密的公式:

                                                      D\left ( n \right )\, =\: (x+n)\: mod\; 26

n代表密匙,解密与加密的区别是n的符号.

  • 代码
    #include <iostream>
    #include <cmath>
    #include <string.h>
    using namespace std;
    
    //加密
    int main()
    {
        char a[105],ch;
        int k;
        cout<<"密匙 k : ";
        cin>>k;
        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<<"密文   : ";
                cout<<(char)((a[i]-'A'+k)%26+'A');
            }
        }
        return 0;
    }
    //解密
    #include <iostream>
    #include <cmath>
    #include <string.h>
    using namespace std;
    
    int main()
    {
        char a[105],ch;
        int k;
        cout<<"密匙k:";
        cin>>k;
        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<<"明文 : ";
                cout<<(char)((a[i]-'A'+26-k)%26+'A');
            }
        }
        return 0;
    }
    

    本章未完待续,下次再更新.

 


版权声明:本文为qq_41793276原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。