开篇:润墨网以专业的文秘视角,为您筛选了一篇三步搞定加解密范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
近期谍战片轮番上演,信息的传递让大家惊心动魄,不知不觉中消息已发送,行动成功,革命取得了最后的胜利。如何保密传送消息呢
>> 三步搞定能源报表 三步搞定草本浴 灭黑头缩毛孔,三步教你搞定 “三步法”搞定基础写作 三步搞定“名从”与“定从” 三步轻松搞定经纬网区域定位 三步搞定名从与定从 三步搞定“磁碟机”病毒 经典怀旧电影,三步轻松搞定 下载音乐不费劲,QQMusic三步搞定 DLL出错不用怕三步轻松搞定等 活学活用,小女子三步搞定无赖高管 三步通关 三步走 爱慕三步 教材三步走 教学三步曲 三步足矣 加盟三步曲 “恋爱”三步曲 监管三步曲 常见问题解答 当前所在位置:l
问题分析:有加密后的信息,有对应加密前的信息,我们就可以根据加密后的信息结合加密前的信息一一比较,动态得到一个解密表。有了解密表,就可以根据解密表查表得出加密后的原信息内容了。
main()
{
FILE *p,*q;
p=fopen("spy.in","r");
char a[101],b[101],c[101],d[26];//d[]存放密码表,
int i,sum=0;
for(i=0;i
d[i]='0';
fscanf(p,"%s%s%s",a,b,c);//第一步:输入数据
for(i=0;a[i]!='\0';i++)//第二步:生成解密表
{
if(d[a[i]-'A']=='0') //生成该字符的解密字符
{d[a[i]-'A']=b[i];sum++;}
else
if(d[a[i]-'A']!=b[i])//如果不能生成有效的解密表,退出
{printf("Failed");return 0;}
}
if(sum!=26)//不能生成一张完整的解密表则退出程序
{printf("Failed");return 0; }
for(i=0;c[i]!='\0';i++)//第三步:扫描加密字符串,对照解密表输出加密前的内容
printf("%c",d[c[i]-'A']);
}
反思:这个问题可以动态的进行数据的保密传送,每次可以根据数据传送的需要进行解密表的生成,不一定要把26个字母全用上。
问题三、Vigenère 密码NOIP2012提高组第一题:
问题分析:有了一张加密表,有了密钥,我们可以进行数据加密,如果要对加密后的数据进行解密,则可以进行逆向操作。以密钥为列进行数据查找,看一下加密后的字符和那一个字符对应,则该字符为加密前的字符。
main()
{FILE *p,*q;
int i,j,x;
p=fopen("vigenere.in","r");
fscanf(p,"%s%s",k,str);//第一步:输入数据。
char k[101],str[1001],
jia[27][27]={};//第二步:对照信息生成二维加密表,内容略。
for(i=0;i
if(k[i]>96)
k[i]=k[i]-32;
for(i=0,j=0;i
{if(k[j]=='\0')//密钥结束,循环使用。
j=0;
if((str[i]>='a'))//字符小写时处理方式
{for(x=0;;x++)
if(jia[x][k[j]-'A']==(str[i]-32))
break;
printf("%c",'a'+x);}
if((str[i]
{for(x=0;;x++)
if(jia[x][k[j]-'A']==(str[i]))
break;
printf("%c",'A'+x);}
}
}
反思:根据二维密码表和密钥结合,可以有效的对数据进行加密,我们可不可以扩大密码表的范围,让加密数据更安全呢?
经过以上的三个实例,你是否会三步来完成加密、解密呢。请记住,1、输入数据;2、生成密码表;3、查表加、解密。
附程序,以上所有程序在devc++下编译通过。