三步搞定加解密

时间:2022-08-14 08:56:14

近期谍战片轮番上演,信息的传递让大家惊心动魄,不知不觉中消息已发送,行动成功,革命取得了最后的胜利。如何保密传送消息呢

>> 三步搞定能源报表 三步搞定草本浴 灭黑头缩毛孔,三步教你搞定 “三步法”搞定基础写作 三步搞定“名从”与“定从” 三步轻松搞定经纬网区域定位 三步搞定名从与定从 三步搞定“磁碟机”病毒 经典怀旧电影,三步轻松搞定 下载音乐不费劲,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++下编译通过。

上一篇:一个人的石头记 下一篇:素质教育中班主任的作用