- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
精品文档,知识共享!
实验成绩
《信息安全概论》实验报告
实验一 古典密码实验
专业班级:学号:姓名: 完成时间:2016/ 05/ 09
实验目的
理解简单加密算法的原理;掌握凯撒密码的原理,完成凯撒密码加解密程序的编写;通过实验,加深对古典密码体制的了解,掌握对字符进行灵活处理的方法。
实验内容
根据凯撒密码的原理编写程序,对输入的符号串能够根据设置的密钥分别正确实现凯撒加密和解密功能。
实验环境和开发工具
Windows 7 系统
Eclipse
JDK 1.7
实验步骤和结果
首先获取要加密的内容以及密钥,凯撒密码的密钥即字符移动的位数。由于凯撒密码器的移位是针对字符的,因此需要将待加密的内容中每个字符取出,然后针对每个字符分别加以移位。主要步骤如下:
(1) 读取要加密的字符串、密钥。
(2) 取出字符串中每个字符。
使用字符串类的 charAt()方法取出每个字符,分别加以移位。
(3) 对每个字符进行移位。
由于字母表中共26个字符,因此移位前先将移动的位数(key)和26取模。由于Java中字符和整型可自动转换,因此将字符加上一个正整数即代表在字母表中右移多少位。如果移动的位数是负值,则代表在字母表中左移多少位。
尽管在移动之前已经将移动的位数和26取了模,但通过这种方式实现右移或左移仍可能发生超界。如字母x右移4位应该是字母b,但将字母x增加4后超出26个字母的范围。因此移位后使用两个if语句判断一下,如果向左超界(ca)则增加26;向右超界(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 str.length(); i++) {
c = str.charAt(i);
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));
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));
else if (c = 0 c = 9) // 对数字进行加密
if (c + n % 10 = 9)
estr += (char) (c + n % 10);
else
estr += (char) (0 + ((n - (9 - c) - 1) % 10));
else
estr += c;
}
}
/**
* 凯撒密码 解密方法
* @param str
* @param n
*/
public static void Decode(String str, int n) {
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);
else
estr += (char) (z - (n - (c - a) - 1) % 26);
else if (c = A c = Z)
i
原创力文档


文档评论(0)