简单的加密与解密的实现---仿射密码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的加密与解密的实现---仿射密码相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    void encrytion_decrypt(char input[],int len);
    char input[10];
    cout<<"Please input password:";
    cin>>input;
    int len;
    len=strlen(input);
    cout<<"\n"<<"password is:"<<input<<endl;
    encrytion_decrypt(input,len);
    
    return 0;
}

void encrytion_decrypt(char input[],int len)            //加密_解密函数
{
    // 仿射加密公式 : f(x)=3x+2;
    int i;
    char string[10];
    for(i=0;i<len;i++)
    {
        int a;
        a=(input[i]-97)*3+2;    //加密
        if(a>25)    //对照为0-25     mod为26
        {
            do     //保证不超出域
            {
                a=a-26;    
            }while(a>25);
            a=a+97;        //加密后得到的ASC码;
            string[i]=(char)a;
        }
        else
        {
            a=a+97;
            string[i]=(char)a;
        }

    }
    cout<<"encrytion password is:";
    for(i=0;i<len;i++)
    {
        printf("%c",string[i]);
    }
    cout<<endl;
    char res[10];
    for(i=0;i<len;i++)                //解密过程
    {
        int b;
        b=(string[i]-97)-2; 
/*        if(b==0)
        {
            res[i]=(char)(b+97);
            continue;
        }                              */
        while(b%3!=0)
        {
            b=b+26;
        }
        b=b/3;
        res[i]=(char)(b+97);
    }
    cout<<"keyword is:";
    for(i=0;i<len;i++)
        printf("%c",res[i]);
    cout<<endl;
}


本文出自 “启思·朝圣者” 博客,谢绝转载!

以上是关于简单的加密与解密的实现---仿射密码的主要内容,如果未能解决你的问题,请参考以下文章

仿射密码解密,输出大小写不同

凯撒加密与解密实现

如何在 JAVA 中编写仿射密码解密的逻辑?

简单文本文件的加密与解密。

MySQL密码加密与解密

Python使用rsa模块实现非对称加密与解密