信息安全概论实验一

合集下载

信息安全概论1

信息安全概论1

河南工业大学实验报告
一、实验目的
1、理解简单加密算法的原理;
2、掌握Vigenere密码的原理,完成Vigenere密码加解密程序的编写;
3、通过实验,加深对古典密码体制的了解,掌握对字符进行灵活处理的方法。

二、实验要求
根据Vigenere密码的原理编写程序,对输入的符号串能够根据设置的密钥分别正确实现Vigenere加密和解密功能。

三、实验过程及结果
3.2实验结果如下图所示
3.2.1加密测试数据一:
图1
3.2.2加密测试数据二:
图2
3.2.3解密测试数据一:
图3
3.2.4解密测试数据二:
图4
四、实验总结
在做本实验之前,前一天晚上先预习看了一下,然后到第二天做实验时大概有了思路。

当然在实验中出现了一些问题,譬如,对明文大小写字母转换成密文大小写字母,空格处理等等方面。

后来到中午经过网上搜索和同学讨论,一起解决了这些问题。

做完实验后,我清楚地知道了古典密码的加密方式解密方式,对此我产生了一些兴趣,感觉很有趣。

信息安全实验报告一

信息安全实验报告一

实验成绩《信息安全概论》实验报告实验一古典密码实验专业班级:学号:姓名:完成时间:2016/ 05/ 09一、实验目的理解简单加密算法的原理;掌握凯撒密码的原理,完成凯撒密码加解密程序的编写;通过实验,加深对古典密码体制的了解,掌握对字符进行灵活处理的方法。

二、实验内容根据凯撒密码的原理编写程序,对输入的符号串能够根据设置的密钥分别正确实现凯撒加密和解密功能。

三、实验环境和开发工具1.Windows 7 系统2.Eclipse3.JDK 1.7四、实验步骤和结果首先获取要加密的内容以及密钥,凯撒密码的密钥即字符移动的位数。

由于凯撒密码器的移位是针对字符的,因此需要将待加密的内容中每个字符取出,然后针对每个字符分别加以移位。

主要步骤如下:(1)读取要加密的字符串、密钥。

(2)取出字符串中每个字符。

使用字符串类的 charAt()方法取出每个字符,分别加以移位。

(3)对每个字符进行移位。

由于字母表中共26个字符,因此移位前先将移动的位数(key)和26取模。

由于Java中字符和整型可自动转换,因此将字符加上一个正整数即代表在字母表中右移多少位。

如果移动的位数是负值,则代表在字母表中左移多少位。

尽管在移动之前已经将移动的位数和26取了模,但通过这种方式实现右移或左移仍可能发生超界。

如字母x右移4位应该是字母b,但将字母x增加4后超出26个字母的范围。

因此移位后使用两个if语句判断一下,如果向左超界(c<'a')则增加26;向右超界(c>'z')则减去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);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 < 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 - (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 = 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 byte[rdf.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 <= 25; k++) {Decode(array, k);System.out.println("密钥为 " + k + " 时,结果是" + estr);estr = "";if (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("您输入有误。

信息安全实验

信息安全实验

8信息安全实验实验一信息安全综合实验一.实验目的和要求1.掌握杀病毒软件的安装、使用和设置方法。

2.掌握避免黑客入侵的网络安全技术方法。

3.掌握防火墙软件的安装、使用和设置方法。

二.实验内容和步骤1.查杀计算机病毒①安装或使用本机已经安装的杀病毒软件查杀本机系统盘(含内存、引导区和邮箱)或优盘的病毒。

②在杀毒过程中,研究该杀病毒软件的各方面的性能后,对该杀病毒软件在查杀毒性能、操作界面、升级或更新等各方面做出一个综合性评价报告。

③无论是否查出有病毒,请将提示窗口抓图贴到实验报告中。

2.防黑客入侵手段(1)给Windows XP设置密码①打开“控制面板”从“用户账户”中创建一个用户并为这个账户设上密码。

②定义更安全的密码规则用到的是系统的“本地安全设置”工具,从“开始”按钮打开的“运行”对话框中输入“secpol.msc”并确定。

出现如图1-1所示的“本地安全设置”对话框。

③在此对话框的左窗格展开“账户策略”中的“密码策略”,右窗格显示的选项就是要定义的密码规则。

图1-1“本地安全设置”对话框设置“密码策略”④首先双击“密码必须符合复杂性要求”,将安全设置设为“已启用”,此时用户在“控制面板”“用户账户”中创建的密码必须包含大小写英文、阿拉伯数字及特殊字符这三种类型字符,如果未包含其中一种字符,将会弹出对话框提示,重做第①步。

⑤双击“密码长度最小值”,设置用户创建密码的最小位数,可以输入0至14之间的阿拉伯数字,0表示不要求检测创建的密码长度。

这里密码长度最小值建议设为8个字符,一旦用户原创建的密码不满足要求的位数,系统也将弹出对话框警告,重做第①步。

⑥“密码最长(短)存留期”设置:这个选项是设置密码的过期时间,即在指定的周期时间内必须更换一次符合要求的新密码。

当然,设置为0则表示密码永久不作废,最长的周期时间是999天。

这里将“密码最长存留期”设置为“密码最短存留期”的2至3倍,如最长存留期设为30天,那么最短存留期可以设置为10天。

信息安全概论实验报告

信息安全概论实验报告
程序如下:
…………
for (round = 0; round < 8; round++)
{
work= ROR(right, 4) ^ *keys++;
leftt ^= SP7[work & 0x3fL]
^ SP5[(work >> 8) & 0x3fL]
^ SP3[(work >> 16) & 0x3fL]
char ptHexNum[16];//用16位字符数组保存16位16进制数
gets(ptHexNum);
unsigned char ptBinHignNum[8],ptBinLowNum[8];
//将16位16进制数共64位按内存模型转变成8位字符数组ptNumtoCh中
unsigned char ptNumtoCh[9];
case'd':
case'D':ptBinLowNum[i/2]=char(0x0D);break;
case'e':
case'E':ptBinLowNum[i/2]=char(0x0E);break;
case'f':
case'F':ptBinLowNum[i/2]=char(0x0F);break;
^ SP2[(work >> 24) & 0x3fL];
printf("L(%d) = %X\t\t",round*2+1,leftt);
printf("R(%d) = %X\n",round*2+1,right);

信息安全试验

信息安全试验

目录1.实验一网络通信安全1.1实验目的-------------------------------------------31.2实验内容-------------------------------------------31.3相关知识-------------------------------------------31.4实验设计-------------------------------------------51.5实验成果-------------------------------------------71.6实验小结-------------------------------------------9 2.实验二网络攻防2.1实验目的------------------------------------------102.2实验内容------------------------------------------102.3实验原理------------------------------------------102.4实验步骤------------------------------------------102.5实验小结------------------------------------------14 3.实验三Web服务器配置3.1实验目的------------------------------------------153.2实验要求------------------------------------------153.3实验内容------------------------------------------153.4实验小结------------------------------------------29 4.实验四信息系统安全4.1实验目的------------------------------------------304.2实验内容------------------------------------------304.3实验设计------------------------------------------304.4实验成果------------------------------------------314.5实验小结------------------------------------------34实验一网络通信安全1.1实验目的通过本章的学习,使学生掌握密码学在通信安全中的具体应用。

信息安全实验报告(一)

信息安全实验报告(一)
实验步骤
1、关闭计算机的防病毒软件。
2、安装Sniffer Pro。
3、安装Superscan
4、安装Fluxay5。
5、将同一实验组的计算机设为同一网段。
6、利用Sniffer Pro观察对方的网络数据包,分析网络性能和故障。
7、用Superscan扫描对方的计算机,记录扫描的结果和发现的漏洞。
8、用Fluxay5扫描系统的漏洞并破解出另一台机器的帐号与口令
而sniffer就是一种能将本地网络接口设置成“混杂”(promiscuous)状态的软件,当网络接口处于这种"混杂"方式时,该网络接口具备广播地址,它对所有遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。
sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。
信息安全实验报告(一)
学院:计算机科学与信息学院 专业: 网络工程 班级:网络092
姓名
王荣森
学号
0908060386
实验组
实验时间
2012.12.5
指导教师
王晓鹏
成绩
实验项目名称
实验一:常用信息安全工具的使用
实验目的
1、理解并掌握基于网络的信息安全概念和原理
2、熟悉嗅探、网络漏洞扫描等常用工具的安装、配置与使用。
(2)TCP SYN扫描
本地主机向目标主机发送SYN数据段,如果远端目标主机端口开放,则回应SYN=1,ACK=1,此时本地主机发送RST给目标主机,拒绝连接。如果远端主机端口未开放,则会回应RST给本地主机。由此可知,根据回应的数据段可以判断目标主机的端口是否开放。由于TCP SYN扫描并没有建立TCP正常连接,所以降低了被发现的可能,同时提高了扫描性能。

信息安全实验

信息安全实验

信息安全计算机信息安全技术实验安排表实验一加密与解密一、实验目的及要求1.提高对加密与解密原理的认识2.提高对信息隐藏原理的认识3.学会使用加密与隐藏软件4.了解口令破解基本方法;5.体会设置安全口令的重要意义二、实验学时4学时三、实验任务1.加密与隐藏软件2.利用破解密码软件破解口令四、实验重点、难点1.Easy code boy plus的使用2.能熟练运用Lophtcrack、Aoxppr、Apdfprp、Mailhack等五、操作要点1. 加密文件2.解密文件3.生成随机密码4.生成可自解密文件5.文件隐藏与恢复6.伪装文件夹7.破解Windows2000/xp系统密码8.破解Office文档密码9.破解PDF文档密码10.破解POP3邮箱密码六、注意事项Easy code boy plus可以将不同类型的文件作为寄主文件,将各种文件隐藏到不同类型的文件中。

为了减少实验时间,实验破解用的密码可以选得简单一些。

如1234。

实验二漏洞扫描与病毒防治一、实验目的及要求1.了解目前系统存在的典型漏洞;2.学会使用网络扫描和漏洞扫描工具。

3. 学会使用常见杀毒软件二、实验学时4学时三、实验任务利用漏洞扫描工具扫描网络漏洞利用瑞星或者卡巴斯基对整个系统进行杀毒四、实验重点、难点熟练使用X-Scan工具五、操作要点(一)漏洞扫描1.运行X-Scan2.设置参数3.设置插件4.设置检测范围5.开始扫描6.报告扫描结果(二)病毒防治1.运行瑞星杀毒软件2.设置参数3.开始查杀病毒4.报告杀毒结果六、注意事项X-Scan还具有物理地址查询、ARP查询、whosi等功能。

实验三网络监听与防火墙配置一、实验目的及要求1.熟悉网络监听工具Sniffer Pro操作界面;2.了解Sniffer Pro捕获与监听网络数据方法;3.强化网络安全意识。

4.掌握防火墙IP规则设置原理和方法;5.掌握防火墙应用程序规则设置原理和方法。

信息安全概论实验(6次)

信息安全概论实验(6次)

实验1 密码学实验实验目的1)编程实现常见古典密码算法,加深对古典密码的理解;2)掌握加密算法设计原则;3)掌握对古典密码的攻击方法。

实验设备与环境若干安装Windows的PC,安装Java或C++或C#编程开发环境。

实验环境的拓扑结构图如下:实验内容与步骤1)编程实现凯撒密码,输入任意明文,观察明密文关系。

c=E(k,m)=(m + k) mod 262)编程实现单表代换密码;输入任意明文,观察明密文关系。

3)编程实现Hill密码;输入任意明文,观察明密文关系。

Hill密码的加密算法将m个连续的明文字母替换成m个密文字母,这是由m个线性方程决定的,在方程中每个字母被指定为一个数值(a=0,b=1,…,z=25)。

该密码体制可以描述为:C=KP mod 26其中C和P是列向量,分别代表密文和明文,K是一个方阵,代表加密密钥。

运算按模26执行。

4)编程实现Playfair密码;输入任意明文,观察明密文关系。

Playfair算法基于一个由密钥词构成的5 x 5字母矩阵。

填充矩阵的方法是:首先将密钥词(去掉重复字母)从左至右、从上至下填在矩阵格子中;然后将字母表中除密钥词字母以外的字母按顺序从左至右、从上至下填在矩阵剩下的格子里。

对明文按如下规则一次加密两个字母:①如果该字母对的两个字母是相同的。

那么在它们之间加一个填充字母,比如x。

例如balloon先把它变成ba lx lo on这样四个字母对。

②落在矩阵同一行的明文字母对中的字母由其右边的字母来代换,每行中最右边的一个字母用该行中最左边的第一个字母来代换,比如ar变成RM。

③落在矩阵同一列的明文字母对中的字母由其下面的字母来代换,每列中最下面的一个字母用该列中最上面的第一个字母来代换,比如mu变成CM。

④其他的每组明文字母对中的字母按如下方式代换:该字母的所在行为密文所在的行,另一字母的所在列为密文所在列。

比如hs变成BP,ea变成IM或(JM)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《信息安全概论》课程实验报告
实验名称古典密码验证与设计:Hill、Playfair、Vigenere算法实验序号1姓名系院专业班级学号
实验日期指导教师成绩
一、实验目的
(具体内容见实验大纲)
掌握密码学的基本概念,掌握几种典型的古典密码的设计原理。

二、实验内容与要求
(具体内容见实验大纲)
1 手工计算以下算法
1)用Vigenere加密we are discovered”
K=deceptive
2)采用Hill密码对明文best加密,并写出解密过程,使用密钥
K= 4 9
3 7
3)用Playfair算法加密明文“playfair is not secure”K=fivestars
2 采用密码分析软件CAP验证以上计算,并写出实验分析
3 编程实现Vigenere算法(编程工具不限)
三、实验设备
地点:科技楼网络实验室602
硬件环境:windows xp操作系统
软件环境:cap4,vc++6.0
四、实验步骤
1. 手工计算以下算法
1) 明文对应数字分别为22 4 0 17 4 3 8 18 2 14 21 4 17 4 3
密钥对应数字分别为3 4 2 4 15 19 8 21 4
明文22 4 017438182142141743
密钥34241519821434241519
密文25822119221613617256211922
密文z i c v t w q n g r z g v t w
由上表得密文为zicvtwqngrzgvtw
2)明文best分别对应1 4 18 19
即矩阵为1 4
18 19
此矩阵乘密钥k后mod26得到矩阵
16 11
25 9
即密文为qlzj
3)由k得到5*5矩阵 f i v e s
t a r b c
d g h k l
m n o p q
u w x y z
将明文分组得到pl ay fa ir is no ts ec ur eq
由矩阵和明文分组得对应密文qk bw it va vf op cf sb xt sp
2. 采用密码分析软件CAP验证以上计算,并写出实验分析
由CAP验证得1中1)的结果为zicvtwqngrzgvtw,结果正确
2)的数字结果分别为142 163 71 87,与结果不同,原因不明。

3)的结果为qkbwitvavfopcfsbxtsp,结果正确
3. 编程实现Vigenere算法(编程工具不限)
#include<stdio.h>
#include<stdlib.h>
void main()
{
char a[101],b[101],d[101]={'?'},c[]={'a','b','c','d','e','f','g','h','i','j','k',
'l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int i=0,j,k,m=0,n;
printf("输入不超过100字数的字母明文a:");
scanf("%s",a);
printf("输入不超过100字数的字母密钥b:");
scanf("%s",b);
for(i=0;i<=100;i++)
{
if(b[i]=='\0')
{
n=i;
break;
}
}
for(i=0;i<100;i++)
{
if(a[i]=='\0')break;
for(j=0;j<26;j++)
{
if(a[i]==c[j])
break;
}//j是a[i]在26字母中的序号
for(k=0;k<26;k++)
{
if(b[m]==c[k])
break;
}//k是b[m]在26字母中的序号
m++;
m=m%n;
j=(k+j)%26;
d[i]=c[j];
}
printf("密文为:%s\n",d);
}
五、实验结果与分析
1.测试数据及结果
答:第四题中,题1的1)
2)
3)
第四题中题3
2.实验中遇到的问题及解决办法
答:第四题中,题3中输入的字母中不能有空格,否则会发生错误。

尚未解决。

3.实验中尚未解决的问题及不足
答:未解决的问题及不足即在上一小题中所说的。

相关文档
最新文档