三步搞定加解密

来源 :信息教研周刊 | 被引量 : 0次 | 上传用户:cngd0613
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  近期谍战片轮番上演,信息的传递让大家惊心动魄,不知不觉中消息已发送,行动成功,革命取得了最后的胜利。如何保密传送消息呢?这是谍战片中的场景,也是我们生活中的事情,更是信息学中常涉及的课题。如何解决这类问题呢?我认为关键是找到数据传递的密码表,有了密码表,只需要简单的三步,一切都可以迎刃而解了。
  具体的方法是:
  1.输入加密后或需要加密的数据。
  2.生成密码表(加密表、解密表);原理,ASCII字符是有序的,用字符数组的下标表示字符,数组的值保存对应的加密或解密字符。
  3.根据字符的有序性,查表解密或加密数据。
  问题一、《C程序设计第四版》,P169,12题。
  问题分析:根据提供的转换规则,生成一个解密表,对输入的字符查表得到对应的密码。
  int main()
  {
  int i;
  char jiami1[26],str[1000],ans[1000],temp;
  gets(str);//第一步:输入数据;
  for(temp='Z',i=0;temp>='A';temp--,i++)//第二步:生成大写字母解密表,
  jiami1[i]=temp;
  for(i=0;str[i]!='\0';i++)//第三步:查表解密数据
  {
  if(str[i]>='A'&&str[i]<='Z')//大写字母查表解密
  {ans[i]=jiami1[str[i]-'A'];continue;}
  if(str[i]>='a'&&str[i]<='z')//小写字母查表解密,在大写字母基础上加上32变成小写字母。
  { ans[i]=jiami1[str[i]-'a']+32;continue;}
  ans[i]=str[i];//非字符数据不变
  }
  ans[i]='\0';//设置结束标记。
  printf("加密字串是:%s\n",str);
  printf("解密后的是:%s\n",ans);//输出原字串。
  }
  反思:只需要三步就可完成简单的解密功能,是不是挺简单?
  下面让我们再来看一下另一动态解密的实例
  问题二、潜伏者NOIP2009复赛第一题
  http://wenku.baidu.com/view/6733af5c312b3169a451a4ec.html
  问题分析:有加密后的信息,有对应加密前的信息,我们就可以根据加密后的信息结合加密前的信息一一比较,动态得到一个解密表。有了解密表,就可以根据解密表查表得出加密后的原信息内容了。
  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<=25;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提高组第一题:http://wenku.baidu.com/view/005de845a8956bec0975e3a9.html
  问题分析:有了一张加密表,有了密钥,我们可以进行数据加密,如果要对加密后的数据进行解密,则可以进行逆向操作。以密钥为列进行数据查找,看一下加密后的字符和那一个字符对应,则该字符为加密前的字符。
  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]<'a'))//字符大写时处理方式
  {for(x=0;;x++)
  if(jia[x][k[j]-'A']==(str[i]))
  break;
  printf("%c",'A'+x);}
  }
  }
  反思:根据二维密码表和密钥结合,可以有效的对数据进行加密,我们可不可以扩大密码表的范围,让加密数据更安全呢?
  经过以上的三个实例,你是否会三步来完成加密、解密呢。请记住,1、输入数据;2、生成密码表;3、查表加、解密。
  附程序,以上所有程序在devc++下编译通过。
其他文献
纵观历年高考试题,非谓语动词一直都是高考考查的重点,而且是热点,还是学生的难点。下面就非谓语动词的难点及特殊用法进行一下归纳和总结:  一、现在分词作状语与过去分词作状语的区别  如果是意义上的主谓关系,一般用现在分词;如果是意义上的动宾关系,则一般用过去分词。  Seen from the top of the hill,the park looks even more beautiful.  
期刊
小学低年级的阅读教学应以读为主。新的《语文课程标准》指出:“要让学生充分地读,在读书中整体感知,在读中有所感悟,在读中培养语感,在读中受到情感的熏陶。”古人云:“书读百遍,其义自见”。这足以说明多读的好处。但是一味地强调多读,不教给学生读书的方法,不注意读书的多样化的形式,不培养良好的读书习惯,也是不行的。为了保证低年级学生的阅读质量,提高低年级学生的阅读能力,我认为,在阅读教学中要做到以读为主线
期刊
暑期中,孩子安排了自己的计划,准备“静养生息”——合理地安排了自己的暑期生活与学习内容,做到有张有弛,我们看了也颔首、鼓掌,以表示我们的认同。开始之初,我与他一起享受着每日完成计划带来的欢愉。但是,随着时间的挪移,孩子在完成“计划”上“规定动作”的幅度似乎有些怠慢。  我知道,孩子的内心是积极向上的,需要的只是一个自我克制与约束。  我静静地等候着变化。  一天下来,孩子会有一两个计划任务没有及时
期刊
河南位于黄河中下游,简称“豫”,因其大部分位于黄河以南而得名。河南是中华文明和中华民族的发源地,中原河洛、三商文化源远流长,汉字文化、姓氏文化、根亲文化、诗词文化、功夫文化等博大精深;省内文物古迹、风景名胜众多,少林寺、龙门石窟、殷墟、清明上河园、商丘古城、嵩山、云台山等闻名海内外。  河南是中国经济大省,2011年GDP总量列全国第五位、中西部第一位,河南是人口大省、教育大省。2011年,教育人
期刊
写作从某一种角度上讲就是用笔记下自己内心的感受或直抒胸臆,发表个人看法。而对于大多数学生来说,写作或多或少也是一件令人头痛的事情。小学阶段一个人养成了良好的写作习惯,不仅对他未来的学习深造很有帮助,而且将直接影响他的一生。  爱因斯坦说:“兴趣是最好的老师。”同时,结合平时的教学经验,我认为要提高学生的写作水平应从兴趣抓起。培养学生写作兴趣我主要从以下几个方面着手。  首先,要多看、多想。写作文要
期刊
在中学英语教学中,教师运用正确的指导方法,把教学的“舞台”还给学生,促使学生主动把握英语学习,增加英语知识的吸收,提高英语学习的技能,以此来达到学生自主发展的目的,并最终达到综合素质的提高,这是教育改革的需要,也是社会发展的需要。要改革课堂教学,首先应该对教师的教育理念、教学思想进行改革。在教学过程中,教师是主导,学生是主体,学生的学习积极性和主动性是学习的内因,它决定了学生的学习以及掌握学科知识
期刊
多媒体是以计算机为中心来处理多种媒体信息的技术(计算机技术和视听技术),这些技术综合在一起组成多媒体系统,最终形成网络,进行优化教学。我们现在所用的教学媒体,如书本、模型、挂图、幻灯、投影、录音、电视、录像、计算机等及其与其配套的软件资料,在教师精心设计指导下,进行多媒体优化组合,在教学中发挥多种媒体的优势。更好地突破教学难点,利用二维、三维动画技术和视频技术不但可以使一些抽象难懂的概念变成形象、
期刊
交往,是人与人之间为了交流信息而相互施加影响的过程。交往既是人自身发展的需要,也是现代社会对人的要求。社会交往作为现代人适应未来社会的重要能力越来越受到人们的重视。新课程的培养目标明确提出要“培养学生具有初步的创新精神和实践能力”,要求“让学生通过实践活动接触自然、社会”,“为学生思考、探究、发现和创新提供较为广阔的空间”,挖掘创新潜能,弘扬主体精神,促进学生个性、和谐发展。《语文课程标准》也指出
期刊
一个优秀班主任做经验报告时说:“班主任在,学生能做好,是一个基本合格的班主任;班主任不在,学生能做好,是一个优秀的班主任;班主任在,学生仍不能做好,则是一个失败的班主任。”多年以来,我一直思考如何做好班主任,希望成为一名智慧爱心型的优秀班主任。下面,我就谈谈我的具体工作和具体做法。  一、开学三步曲  新生入校的第一天,我设计了三个活动:  1.自我介绍。给每个同学一分钟介绍自己的姓名、年龄、爱好
期刊
文章摘要:本文主要围绕校长、教师应向杜郎口中学学习什么两条线展开叙述。从校长层面讲应该懂得:教育是一种责任、教育是一项服务、教育是一门科学、教育是一门艺术、教育是一种追求、教育是一项事业;从教师层面讲,应该理解:1.惟有埋头,方能出头;2.解放自我,超越自我;3.立足课堂,决胜课堂;4.学校之事,必做于细;5.物有本末,事有始终;6.勤学者博,善思者智;。  关键词:杜郎口,崔其升,“三三六”模式
期刊