




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验成绩信息安全概论实验报告实验一 古典密码实验专业班级:学号:姓名: 完成时间:2016/ 05/ 091、 实验目的理解简单加密算法的原理;掌握凯撒密码的原理,完成凯撒密码加解密程序的编写;通过实验,加深对古典密码体制的了解,掌握对字符进行灵活处理的方法。二、 实验内容根据凯撒密码的原理编写程序,对输入的符号串能够根据设置的密钥分别正确实现凯撒加密和解密功能。3、 实验环境和开发工具1. Windows 7 系统2. Eclipse 3. JDK 1.74、 实验步骤和结果首先获取要加密的内容以及密钥,凯撒密码的密钥即字符移动的位数。由于凯撒密码器的移位是针对字符的,因此需要将待加密的内容中每个字符取出,然后针对每个字符分别加以移位。主要步骤如下:(1) 读取要加密的字符串、密钥。(2) 取出字符串中每个字符。使用字符串类的 charAt()方法取出每个字符,分别加以移位。(3) 对每个字符进行移位。由于字母表中共26个字符,因此移位前先将移动的位数(key)和26取模。由于Java中字符和整型可自动转换,因此将字符加上一个正整数即代表在字母表中右移多少位。如果移动的位数是负值,则代表在字母表中左移多少位。尽管在移动之前已经将移动的位数和26取了模,但通过这种方式实现右移或左移仍可能发生超界。如字母x右移4位应该是字母b,但将字母x增加4后超出26个字母的范围。因此移位后使用两个if语句判断一下,如果向左超界(cz)则减去26。源程序:package Caesar;import java.io.*;import java.util.Scanner;/* * author SiRuYan */public class Caesar / 声明一些全局变量public static String path;public static String estr = ;public static char c;/* * 凯撒密码 加密方法 * * param str * param n */public static void Encode(String str, int n) for (int i = 0; i = a & c = z)if (c + n % 26 = A & c = Z)if (c + n % 26 = 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, int n) for (int i = 0; i = a & c = a)estr += (char) (c - n % 26);elseestr += (char) (z - (n - (c - a) - 1) % 26);else if (c = A & c = A)estr += (char) (c - n % 26);elseestr += (char) (Z - (n - (c - A) - 1) % 26);else if (c = 0 & c = 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 = null;int num;System.out.println(-凯撒密码-);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 = new File(path); / 声明文件变量,以便读入指定文件路径下的文件内容FileInputStream rdf = new FileInputStream(file); / available()(FileInputStream变量)方法返回的实际可读字节数,也就是总大小byte s = new byterdf.available();/ System.out.println(文件的大小:+rdf.available(); 测试语句int b = rdf.available();while (b = rdf.read(s, 0, b) != -1) / 将文件内容读入字节数组中String content = new String(s, 0, b);array = array + content;rdf.close(); / 关闭输入流if (ed.equals(3) / 3 暴力破解for (int k = 1; k = 10) for (int j = 1; j = 9; j+) Decode(array, k + 26 * j);System.out.println(密钥为 + (k + 26 * j)+ 时,结果为 + estr);estr = ;System.out.print(正确的密钥为(整数):);int result = in.nextInt();Decode(array, result); else System.out.print(密钥(整数):);num = in.nextInt();if (ed.equals(1) / 1 加密Encode(array, num);else / 2 解密Decode(array, num);/ 最后重新把加密、解密后的内容,借助文件、缓冲区输入流重新写入文件File f = new File(path);FileWriter outFile = new FileWriter(f);BufferedWriter bufferOut = new BufferedWriter(outFile);bufferOut.write(estr);bufferOut.newLine();bufferOut.flush();bufferOut.close();System.out.print(原文件是否已成功加密或解密!); elseSystem.out.print(您输入有误。); catch (Exception e) System.out.print(输入错误。);运行结果(注意 实验对文件完成加、解密):密钥为: 3 。加密前、后结果如下图: 5、 实验遇到问题及解决方法问题1:程序起初是在eclipse中运行,现在回归到控制台。Java文件中由于包的存在,使一些方法找不到。删除文件首部的引入的package包即可。问题2:实验的对象范围为大小写字母、数字。开始时,解密方法的实现出现了问题,有时候会出现的解密结果,原因是由于相对偏移量的计算出现问题,后来修改后程序运行正确。问题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳动合同范本及审查
- 七年级人教版上册教学设计第三课 IT新城班加罗尔教学设计
- 个人租房合同范本样书
- 公墓购销协议合同范本
- 内装箱合同范本
- 万科电缆合同范本
- 事故二手车买卖合同范本
- 2024年广州市天河区体育西幼儿园聘用制专任教师招聘考试真题
- 买地皮出售合同范本
- 保洁公司加盟合同范本
- DeepSeek1天开发快速入门
- 2025书记员招聘考试题库及参考答案
- 2024-2025年第二学期数学教研组工作计划
- 2025辅警招聘公安基础知识题库附含参考答案
- GB/T 44927-2024知识管理体系要求
- 2025年环卫工作计划
- 2024年07月山东省泰山财产保险股份有限公司2024年夏季校园招考29名工作人员笔试历年参考题库附带答案详解
- 品质巡检培训课件
- 医疗器械生产企业并购合同
- 2025版新能源汽车充电站建设合同含政府补贴及税收优惠条款
- 初验整改报告格式范文
评论
0/150
提交评论