您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 密钥短语密码实验报告
置换密码的实验报告一、实验目的通过实验熟练掌握置换密码算法,学会置换密码算法程序设计。二、实验环境软件工具:VisualC++6.0操作系统:windowsxp三、实验思想下面是密钥短语密码的实现步骤:1.选择密钥并删除重复字母.2.在明文的字母表下方从左往右写下处理的后的密钥,然后再写剩余的字母即得密文字母表.四、实验数据(源代码)#includeiostream#includestring.h#includectype.husingnamespacestd;/*加密流程:1.输入明文2.用户输入密码句子;3.由密码句子产生代换字符表4.产生密文解密流程:1.输入密文2.用户输入密码句子;3.产生代换字符表4.产生明文*/#defineMING_WEN1000//设明文长度最大为1000charmingwen[MING_WEN];//存放明文charmiwen[MING_WEN];//存放密文charmiyuejvzi[100];//密钥句子charalphabeta[27];//代换字母表stringstr=abcdefghijklmnopqrstuvwxyz;voidgenerate_alphabeta();//产生代换字符表voidgenerate_miwen();//产生密文voidgenerate_mingwen();//产生明文intmain(){intchoice;cout古典密码之置换密码.endl;cout你想完成什么操作?endl;cout加密请输入数字1,解密请输入数字2,退出请输入其他键.endl;cinchoice;cin.clear();cin.sync();if(choice==1){cout请输入你想加密的字符串(请不要超出MING_WEN个字符,不能输入中文):endl;cin.getline(mingwen,MING_WEN);cout你输入的明文是:mingwenendl;intmingwen_length=strlen(mingwen);//明文长度generate_alphabeta();//产生代换字符表generate_miwen();}if(choice==2){cout请输入你想解密的字符串:endl;cin.getline(miwen,MING_WEN);cout你输入的密文是:miwenendl;intmiwen_length=strlen(miwen);//密文长度generate_alphabeta();//产生代换字符表generate_mingwen();}}voidgenerate_alphabeta()//产生代换字符表{inti,j;cout请输入密钥句子,至少为1个字符,最多100个字符,且第一个字符必须是小写字母:endl;cin.getline(miyuejvzi,100);//输入的密钥句子,至少为1个字符,最多100个字符,且第一个必须为字母coutmiyuejvziendl;intlength=strlen(miyuejvzi);/*cout密钥句子的长度为:lengthendl;*/intpos=0;//指示填充位置inttag=1;//alphabeta[0]=miyuejvzi[0];//填充第0个位置for(i=1;ilength;i++){if(isalpha(miyuejvzi[i])!=0)//是字母{tag=1;for(j=0;j=pos;j++){if(alphabeta[j]==miyuejvzi[i])//alphabet表中已经存在字母miyuejvzi[i]{tag=0;break;}}if(tag==1)alphabeta[++pos]=miyuejvzi[i];}}/*cout代换字母表:endl;coutalphabetaendl;cout已产生的字母表中字符个数pos+1endl;*/for(i=0;i26;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原始字母表为strendl;cout代换密码表为alphabetaendl;}voidgenerate_miwen()//产生密文{//对明文中的每一个字母加密//计算出该字母在字母表中的序号,a序号为0,b序号为1...,依次类推//alphabeta[0]是序号为0的字母a的密文,alphabeta[1]是序号为1的字母的密文...,依次类推intpos;for(inti=strlen(mingwen);i=0;i--){if(islower(mingwen[i]))//假如当前字符是小写字母{pos=mingwen[i]-'a';//计算出当前字母在字母表中的序号miwen[i]=alphabeta[pos];}else//不是字母,原样复制miwen[i]=mingwen[i];}cout明文为:mingwenendl;cout密文为:miwenendl;}voidgenerate_mingwen()//产生明文{for(inti=strlen(miwen);i=0;i--){if(islower(miwen[i]))//假如当前字符是小写字母{for(intj=0;j26;j++){if(miwen[i]==alphabeta[j])//当前密文字符,在代换字符表的第j个位置,在其明文字符为str[j];{mingwen[i]=str[j];break;}}}else//不是字母,原样复制mingwen[i]=miwen[i];}cout密文为:miwenendl;cout明文为:mingwenendl;}五、实验结果
本文标题:密钥短语密码实验报告
链接地址:https://www.777doc.com/doc-5631437 .html