标签:仿射密码
#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