欢迎来到天天文库
浏览记录
ID:51850720
大小:64.00 KB
页数:8页
时间:2020-03-17
《维吉尼亚加密程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、功能介绍数据加密基本概念任何保密数据只要被非法分子获取,这些数据就不再是密码的了。数据加密的思想正源于此。加密是将原文信息进行伪装处理,即使这些数据被盗窃,非法用户得到的也是一堆杂乱无章的垃圾数据。而合法用户通过解密处理,将这些数据还原为有用信息。因此,数据加密是防止非法使用数据的最后一道防线。明文原文数据;密文伪装后的数据;密钥是由数字,字母或特殊符号组成的字符串,用它控制数据加密,解密的过程;加密把明文转化成密文的过程;加密算法加密所采用的变换方法;解密对密文实施与加密相逆的变换,从而获得明文的过程。解密算法解密所采用的变换方法Vigenere密码加密(
2、多表变换字法)Vigenere密码是由法国的密码学者在16世纪提出的。该方法是把英文字母表循环移位0,1,2,3,4,5,6,7……25后得到的密文字母表,作为Vigenere方阵英文字母表与模26剩余之间的对应关系表ABCDEFGHIJKLMNOPQRSTUVWXYZ012345678910111213141516171819202122232425程序清单#includeusingnamespacestd;#defineMINCHAR32#defineCHARSUM94chartable[CHARSUM][CHARSUM];boolI
3、nit();boolEncode(char*key,char*source,char*dest);boolDncode(char*key,char*source,char*dest);intmain(){if(!Init()){cout<<"初始化错误!"<>operation;}while(operation!=-1&&o
4、peration!=1&&operation!=2);if(operation==-1)return0;elseif(operation==1)//加密{cout<<"请输入密钥:";cin>>key;cout<<"请输入待加密字符串:";cin>>str1;Encode(key,str1,str2);cout<<"加密后的字符串:"<>key;cout<<"请输入待解密字符串:";cin>>str1;Dncode(key,str1,str2);
5、cout<<"解密后的字符串:"<6、e;char*tempKey=key;char*tempDest=dest;do{*tempDest=table[(*tempKey)-MINCHAR][(*tempSource)-MINCHAR];tempDest++;if(!(*(++tempKey)))tempKey=key;}while(*tempSource++);dest[strlen(source)]=0;returntrue;}//解密//key:密钥//source:待解密的字符串//dest:经过解密后的字符串boolDncode(char*key,char*source,char*de7、st){char*tempSource=source;char*tempKey=key;char*tempDest=dest;charoffset;do{offset=(*tempSource)-(*tempKey);offset=offset>=0?offset:offset+CHARSUM;*tempDest=MINCHAR+offset;tempDest++;if(!(*(++tempKey)))tempKey=key;}while(*++tempSource);dest[strlen(source)]=0;returntrue;}运行结果
6、e;char*tempKey=key;char*tempDest=dest;do{*tempDest=table[(*tempKey)-MINCHAR][(*tempSource)-MINCHAR];tempDest++;if(!(*(++tempKey)))tempKey=key;}while(*tempSource++);dest[strlen(source)]=0;returntrue;}//解密//key:密钥//source:待解密的字符串//dest:经过解密后的字符串boolDncode(char*key,char*source,char*de
7、st){char*tempSource=source;char*tempKey=key;char*tempDest=dest;charoffset;do{offset=(*tempSource)-(*tempKey);offset=offset>=0?offset:offset+CHARSUM;*tempDest=MINCHAR+offset;tempDest++;if(!(*(++tempKey)))tempKey=key;}while(*++tempSource);dest[strlen(source)]=0;returntrue;}运行结果
此文档下载收益归作者所有