信息安全实验报告一_第1页
信息安全实验报告一_第2页
信息安全实验报告一_第3页
信息安全实验报告一_第4页
信息安全实验报告一_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验成绩信息安全概论实验报告实验1经典密码实验专业课:学号:名字:完成时间:2016/05/091、实验目的理解简单加密算法的原理。掌握凯撒密码的原理,完成凯撒密码加密和解密程序的编写;通过实验加深对经典密码系统的理解,掌握灵活处理文字的方法。二、实验内容输入的符号字符串根据凯撒密码的原则进行编程,根据设置的密钥分别正确实现凯撒加密和解密功能。3、实验环境和开发工具1.windows 7系统2.eclipse3.jdk 1.74、实验阶段和结果首先,导入要加密的内容和密钥。凯撒密码的密钥是字符移动的位数。凯撒密码机的草稿是用于字符的,因此,删除要加密内容中的每个字符后,必须对每个字符单独进行编

2、码。主要步骤如下:(1)读取要加密的字符串、密钥。(2)从字符串中弹出每个字符。使用字符串类的charat()方法注销并单独移动每个字符。(3)对每个字符进行移位。因为字母表都是26个字符,所以移位前拨出的位数(key)和26。在java中,字符和整数可以自动转换,因此字符中添加了正整数,表示字母表中可以向右移动的位数。移动的位数为负数时,表示字母表中可以向左移动的位数。移动之前使用了移动位数和26,但是以这种方式向右移动或向左移动仍然可能导致上限。如果字母x向右移动4个字符,则应为字母b;但是,如果将字母x增加4,则超出26个字符的范围。因此,在移位后,使用两个if陈述式进行判断,然后从左侧

3、超高(cz)中减去26。源代码:package caesarimport java . io . *;import java . util . scanner;/* * author siruyan*/public class caesar/声明某些全局变量public static string pathpublic static string estr=public static char c;/* *凯撒密码加密方法* * param str* param n*/public static void encode(string str,int n)、for(int i=0);i str

4、. length();i) c=str . charat(i);if (c=a c=z)if (c n% 26=z) /移位后的文字不会大于小写字母z,而是直接杂凑estr=(char)(c n % 26);else/shift后面的字符大于小写字母z,必须循环26个字符estr=(char)(a(n-(z-c)-1)% 26);else if (c=a c=z)if (c n% 26=z) /移位后的文字不会大于大写字母z,而是会直接杂凑estr=(char)(c n % 26);else/移位后的文字大于大写字母z,必须循环26个字元estr=(char)(a(n-(z-c)-1)% 26

5、);else if (c=0 c=9) /加密数字if (c n% 10=9)estr=(char)(c n % 10);elseestr=(char)(0(n-(9-c)-1)% 10);elseestr=c;/* *凯撒解密方法* param str* param n*/public static void decode(string str,intn)、for(int i=0);i str . length();i) c=str . charat(i);if (c=a c=z)if (c-n% 26=a)estr=(char)(c-n % 26);elseestr=(char)(z-(n

6、-(c-a)-1)% 26);else if (c=a c=z)if (c-n% 26=a)estr=(char)(c-n % 26);elseestr=(char)(z-(n-(c-a)-1)% 26);else if (c=0 c=9)if (c-n% 10=0)estr=(char)(c-n % 10);elseestr=(char)(9-(n-(c-0)-1)% 10);elseestr=c;public static void main(string args)string array= scanner in=nullint numsystem . out . print ln(“-

7、凯撒密码-”);system.out.println( -仅支持英语和阿拉伯数字-by siruyan-);try system.out.println(1,加密n2,解密n3,暴力破解);system.out.print(选择:);in=new scanner(system . in);/载入选取序号string ed=in . next();if(ed . equals( 1 )| | ed . equals( 2 )| | ed . equals( 3 )system.out.print(文件路径(* .txt):);path=in . next();/读取加密文件路径file file

8、=new file(path);/声明文件变量,以便读取指定文件路径下的文件内容file input stream rdf=new file input stream(file);/available()(fileinputstream变量)方法返回的实际可读取字节数,即总大小bytes=new byterdf . available();/system.out.println(文件大小: rdf . available();测试语句int b=rdf . available();while (b=rdf.read(s,0,b)!=-1) /将文件内容作为字节数组读取string conten

9、t=new string(s,0,b);array=array contentrdf . close();/关闭输入流if (ed .equals (3) /3暴力破解for(int k=1);k=25k) decode(阵列,k);system.out.println(如果密钥为“k”,则结果为“estr”)。estr= if (k=10) for(int j=1);j=9;j) _decode(阵列,k26 * j);system.out.println(键为(k 26 * j)结果是“estr”。estr= system.out.print(正确的密钥为(整数):;int result=

10、in . nexttint();decode(array,result); elsesystem.out.print(键(整数):;num=in . nextint();if (ed.equals (1)/1加密编码(array,num);else /2解密decode(array,num);/使用文件、缓冲区输入流将上次加密的内容和解密的内容写回文件file f=new file(path);filewriter outfile=new filewriter(f);buffered writer buffer tout=new buffered writer(outfile);buffer

11、out . write(estr);buffer out . newline();buffer out . flush();buffer out . close();system.out.print(“原始文件已成功加密或解密!”); elsesystem.out.print(输入错误); catch (exception e)system.out.print(输入错误 );运行结果(要完成文件添加和解密,请注意实验):身高为3。加密前后的结果如下图所示。5、实验问题和解决方法问题1:程序最初在eclipse中运行,现在返回到控制台。由于java文件中包的存在,找不到某些方法。您可以删除文件顶部的导入的打包包。问题2:实验的对象范围是大小写,数字。最初,相对偏移计算存在问题,以后修改的程序可以正确运行,因此解密方法的实现出现问

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论