码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-03-06 17:43:15      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:仿射密码

#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;
}


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

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

标签:仿射密码

原文地址:http://dearch.blog.51cto.com/10423918/1748067

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!