实验报告姓名:1111学号:班级:日期:1111古典密码(单表代换密码)实验环境硬件配置:处理器:******@,内存2GB,主硬盘320G使用软件:操作系统:win7软件工具:MicrosoftVisualC++:对字母表中的每一个字母用别的字母代换形成密文。明文和密文代换的规则可以是先任选一个易记的单词或短语或一句话作为密钥放在前面,然后从A到X的顺序中剔除前面出现过的字母后依次补在后面,形成代换表。实验内容根据实验原理的介绍,你先选取一个密钥,创建一个明文信息,编写实现程序,实现加密和解密的操作。实验流程图:实验总结分析关键代码::voidgenerate_alphabeta()//产生代换表{inti,j;cout<<"请先输入密钥句子,至少为1个字符,最多100个字符,且第一个字符必须是小写字母:"<<endl;cin>>miyue;//输入的密钥句子,至少为1个字符,最多100个字符,且第一个必须为字母cout<<miyue<<endl;intlength=strlen(miyue);//cout<<"密钥句子的长度为:"<<length<<endl;intpos=0;//指示填充位置inttag=1;//alphabeta[0]=miyue[0];//填充第0个位置for(i=1;i<length;i++){if(isalpha(miyue[i])!=0)//是字母{tag=1;for(j=0;j<=pos;j++){if(alphabeta[j]==miyue[i])//alphabet表中已经存在字母miyue[i]{tag=0;break;}}if(tag==1)alphabeta[++pos]=miyue[i];}}for(i=0;i<26;i++)//把英文字母表中还没有出现在代换字母表中的字母存入代换字母表{tag=1;for(j=0;j<=pos;j++){if(alphabeta[j]==str[i])//alphabet表中已经存在英文字母表中的第i个字母{tag=0;break;}}if(tag==1)alphabeta[++pos]=str[i];}cout<<"原始字母表为"<<str<<endl;cout<<"代换密码表为"<<alphabeta<<endl;}()//加密{intpos;//alphabeta[0]是序号为0的字母a的密文,alphabeta[1]是序号为1的字母的密文...,依次类推for(inti=strlen(source);i>=0;i--){if(islower(source[i]))//假如当前字符是小写字母{pos=source[i]-'a';//计算出当前字母在字母表中的序号cipher[i]=
单表代换密码 来自淘豆网www.taodocs.com转载请标明出处.