信息安全系统实验报告材料.docx

上传人:b****5 文档编号:6505533 上传时间:2023-01-07 格式:DOCX 页数:20 大小:312.15KB
下载 相关 举报
信息安全系统实验报告材料.docx_第1页
第1页 / 共20页
信息安全系统实验报告材料.docx_第2页
第2页 / 共20页
信息安全系统实验报告材料.docx_第3页
第3页 / 共20页
信息安全系统实验报告材料.docx_第4页
第4页 / 共20页
信息安全系统实验报告材料.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

信息安全系统实验报告材料.docx

《信息安全系统实验报告材料.docx》由会员分享,可在线阅读,更多相关《信息安全系统实验报告材料.docx(20页珍藏版)》请在冰豆网上搜索。

信息安全系统实验报告材料.docx

信息安全系统实验报告材料

 

院系:

计算机科学学院

专业:

计算机科学与技术

年级:

2008级

课程名称:

信息安全

学号:

姓名:

指导教师:

 

2011年11月2日

年级

 08级

班号

 08班

 学号

专业

计算机科学与技术

 姓名

实验名称

 Engima密码算法

实验

类型

设计型

综合型

创新型

实验目的:

通过使用Engima密码模拟器,加深对古典密码体制的了解,为深入学习现代密码学奠定基础。

实验要求:

(1)理解Engima密码的原理,在此基础上掌握Engima密码模拟器的使用方法。

(2)可以使用Engima密码模拟器进行加密和解密。

 1、Enigma看起来就像是一个盒子一样,  其主要的三个部件为:

 键盘, 转子, 显示器 . 反射器。

 2、Enigma密码机属于轮转机的一种, 它采用的也是多表替换的思想, 而且是一个长周期的多表替换密码机. 在此系列(六)中直接拿Enigma出来讲是因为Enigma比较具有代表性(当然也是最有名气的, Enigma出自二战时期的德国军方). 其他的一些轮转机有美国的Sigaba, 日本的Red和Purple等, 都是二战时期的产物.Enigma密码机说白了就是几个机械零件组合而成的. 对于轮转机而言, 它有一个键盘和一系列的转轮, 键盘用来输入明文字符串, 每个转轮是字母的任意组合, 有26个接线端, 用来完成一种简单的替换, 同时每个转轮的输出端连接到其下一个相邻转轮的输入端. 当输入一个明文字符时, 相应的信号从第一个轮转的输入端进入, 依次经过各个相邻的转轮,当每经过一个转轮的时候, 该转轮会转动一个位置, 当该转轮装动了一个周期之后, 其下一个转轮会转动一个位置, 这样一直到达最后一个转轮, 然后反射回来, 即可得到密文。

 

 

二、实验步骤

1、使用消息的发送者利用Engima模拟器进行下列操作:

明文:

INFORMATIONSECURITY

模拟器参数设置:

UKW:

B

Walzen:

IIIV

Ringstellung:

F-06V-22N-14

Stecker:

BGCDERFVHNIUJKLMOPTY

如图所示:

生成:

在转子的起始位置:

XWB,生成INFORMATIONSECURITY的密文。

如图所示:

然后把转子的起始位置设为ABC,求出XWB的密文;

如图所示:

最后把模拟器参数设置,转子的起始位置ABC,XWB的密文,INFORMATIONSECURITY的密文发送给接收者。

 

2接收者收到信息后:

对XWB的密文,INFORMATIONSECURITY的密文进行解密。

如图所示:

 

 

三、实验结果分析

根据实验内容以及上述实验步骤得到结果。

通过参数设置可以将一个明文加密成一个密文,发送给接受者以后,接受者进行解密得到明文。

其中,参数的设置起到了关键性的作用。

四、心得体会

 

教师签名:

年月日

 

年级

 08级

班号

 08班

 学号

 

专业

计算机科学与技术

 姓名

实验名称

基于RSA的数字签名实现

实验

类型

设计型

综合型

创新型

 

掌握RSA算法的基本原理,通过用RSA算法对实际数据进行加密和解密来深刻了解RSA的运行原理。

对数字签名有所了解,理解和掌握MD5算法,以及如何利用RSA和MD5算法来实现数字签名。

 1、RSA算法

RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。

  RSA的算法涉及三个参数,n、e1、e2。

  其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。

  e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。

  (n及e1),(n及e2)就是密钥对。

  RSA加解密的算法完全相同,设A为明文,B为密文,则:

A=B^e1modn;B=A^e2modn;

  e1和e2可以互换使用,即:

A=B^e2modn;B=A^e1modn;

2、签名算法

签名算法包括三步:

消息摘要计算,RSA加密.

消息摘要计算.消息在签名前首先通过MD5计算,生成128位的消息摘要

digest.

对摘要作RSA计算.用加密算法,采用签名者的私钥加密消息摘要,得到加密后的字符串.加密算法中使用的加密块为01类型.

3、验证签名算法

验证签名算法包括两步:

RSA解密得签名者的消息摘要,验证者对原消息计算摘要,比较两个消息摘要.验证签名的过程输入为消息,签名者的公钥,签名;输出为验证的结果,即是否是正确的签名.

RSA解密.签名实际是加密的字符串.用3.5所述的解密算法,采用签名者的公钥对这个加密的字符串解密.解密的结果应为128位的消息摘要.在解密过程中,若出现得到的加密块的类型不是01,则解密失败.签名不正确.

消息摘要计算和比较.验证者对消息用MD5算法重新计算,得到验证者自己的消息摘要.验证者比较解密得到的消息摘要和自己的消息摘要,如果两者相同,则验证成功,可以确认消息的完整性及签名确实为签名者的;否则,验证失败。

 

新建一个密钥文件:

生成:

key1.pri和key1.pub

新建一个明文文件mingwen.txt并输入xtiqjy123456进行加密过程:

 

将密文解密的结果存入output.txt该文件中。

确定后打开output.txt得到解密后的内容为:

xtiqjy123456即为加密的内容。

 

编程实现MD5算法:

(源码附后)

1、新建要加密的文件input.txt输入xtiqjy,随机产生密码:

加密后生成:

input.txt.tdes文件。

2、选择第1步生成的文件,用同样的密码解密:

选择保存文件output.txt后:

生成output.txt文件,进行解密得到output.txt内容为:

xtiqjy

心得体会:

 

教师签名:

年月日

 

源代码:

importjava.io.*;

publicclassRsa{

privateintp=0;

privateintq=0;

privatelongn=0;

privatelongm=0;

privatelongpublic_key=0;//公匙

privatelongprivate_key=0;//密匙

privatelongtext=0;//明文

privatelongsecretword=0;//密文

privatelongword=0;//解密后明文

//判断是否为素数

publicbooleanprimenumber(longt)

{

longk=0;k=(long)Math.sqrt((double)t);

booleanflag=true;

outer:

for(inti=2;i<=k;i++)

{

if((t%i)==0)

{

flag=false;

breakouter;

}

}

returnflag;}

//输入PQ

publicvoidinputPQ()throwsException{

do{

System.out.println("请输入素数p:

");

BufferedReaderstdin=newBufferedReader(newInputStreamReader(System.in));

Stringbr=stdin.readLine();

this.p=Integer.parseInt(br);

}while(!

primenumber(this.p));

do{

System.out.println("请输入素数q:

");

BufferedReaderstdin=newBufferedReader(newInputStreamReader(System.in));

Stringbr=stdin.readLine();this.q=Integer.parseInt(br);

}while(!

primenumber(this.q));

this.n=this.p*this.q;

this.m=(p-1)*(q-1);

System.out.println("这两个素数的乘积为p*q:

"+this.n);

System.out.println("所得的小于N并且与N互素的整数的个数为m=(p-1)(q-1):

"+this.m);

}

//求最大公约数

publiclonggcd(longa,longb){

longgcd;

if(b==0)gcd=a;

elsegcd=gcd(b,a%b);

System.out.println("gcd:

"+gcd);returngcd;

}

//输入公匙

publicvoidgetPublic_key()throwsException

{

do

{

System.out.println("请输入一个公钥的值,这个值要求小于m并且和m互质:

");

BufferedReaderstdin=newBufferedReader(newInputStreamReader(System.in));

Stringbr=stdin.readLine();

this.public_key=Long.parseLong(br);

}while((this.public_key>=this.m)||(this.gcd(this.m,this.public_key)!

=1));

System.out.println("公钥为:

"+this.public_key);

}

//计算得到密匙

publicvoidgetPrivate_key()

{

longvalue=1;

outer:

for(longi=1;;i++)

{

value=i*this.m+1;

System.out.println("value:

"+value);

if((value%this.public_key==0)&&(value/this.public_key

{

this.private_key=value/this.public_key;breakouter;

}

}

System.out.println("产生的一个私钥为:

"+this.private_key);

}

//输入明文

publicvoidgetText()throwsException

{

System.out.println("请输入明文:

");

BufferedReaderstdin=newBufferedReader(newInputStreamReader(System.in));

Stringbr=stdin.readLine();this.text=Long.parseLong(br);

}//加密、解密计算

publiclongcolum(longy,longn,longkey)

{

longmul;

if(key==1)mul=y%n;

elsemul=y*this.colum(y,n,key-1)%n;

returnmul;

}//加密后解密

publicvoidpascolum()throwsException

{

this.getText();

System.out.println("输入明文为:

"+this.text);//加密

this.secretword=this.colum(this.text,this.n,this.public_key);

System.out.println("所得的密文为:

"+this.secretword);//解密

this.word=this.colum(this.secretword,this.n,this.private_key);

System.out.println("解密后所得的明文为:

"+this.word);

}

publicstaticvoidmain(String[]args)throwsException

{

Rsat=newRsa();

t.inputPQ();

t.getPublic_key();

t.getPrivate_key();

t.pascolum()}

}

年级

 08级

班号

 08班

 学号

 

专业

计算机科学与技术

 姓名

 

实验名称

基于B/S三层体系结构的用户身份验证系统

实验

类型

设计型

综合型

创新型

 一、实验目的

基于B/S三层体系结构,实现用户身份验证。

能够熟练应用加密解密算法,基本掌握身份验证的整个流程。

 

 

本实验使用JSP+APPLET+JAVABEAN技术:

1、程序逻辑结构:

客户端通过浏览器下载APPLET和加密解密算法jar包,把密码加密成密文后发往服务器。

服务器接收到后调用JAVABEAN组件的方式解密密文,得到密码,连接数据库,查询数据库,对登陆信息中用户名和密码验证。

2、JavaBean组件

JavaBean就是一个Java类,也就意味着,JAVA的一切特性,此JavaBean没有图形显示代码,只是完成基本业务逻辑,JavaBean可以使用JAVA的封装、继承、多态,使用JavaBean封装许多重复调用的代码,使用JavaBean可以达到显示与业务的分离,显示使用JSP,业务使用JavaBean

3、Applet组件

Applet或Java小应用程序是一种在Web环境下,运行于客户端的Java程序组件。

它也是上世纪90年代中期,Java在诞生后得以一炮走红的功臣之一。

通常,每个Applet的功能都比较单一(例如仅用于显示一个舞动的Logo),因此它被称作“小应用程序”。

 

 

 

登陆页面:

 

验证:

(数据库服务器采用SQLserver2005)

 

登录成功:

 

 

登录失败:

心得体会:

 

 

教师签名:

年月日

 

 

源代码:

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

用户登录

functioncheckInsert(){

varname=document.getElementById("username").value;

varpwd=document.getElementById("userpwd").value;

if(name==null||name==""){

alert("请输入您的账号!

");

document.getElementById("username").focus();

returnfalse;

}

if(pwd==null||pwd==""){

alert("请输入您的密码!

");

document.getElementById("userpwd").focus();

returnfalse;

}

base64encode(pwd);

enterform.submit();

returntrue;

}

//64加密

functionbase64encode(str){

varout,i,len;

varc1,c2,c3;

len=str.length;

i=0;

out="";

while(i

c1=str.charCodeAt(i++)&0xff;

if(i==len)

{

out+=base64EncodeChars.charAt(c1>>2);

out+=base64EncodeChars.charAt((c1&0x3)<<4);

out+="==";

break;

}

c2=str.charCodeAt(i++);

if(i==len)

{

out+=base64EncodeChars.charAt(c1>>2);

out+=base64EncodeChars.charAt(((c1&0x3)<<4)|((c2&0xF0)>>4));

out+=base64EncodeChars.charAt((c2&0xF)<<2);

out+="=";

break;

}

c3=str.charCodeAt(i++);

out+=base64EncodeChars.charAt(c1>>2);

out+=base64EncodeChars.charAt(((c1&0x3)<<4)|((c2&0xF0)>>4));

out+=base64EncodeChars.charAt(((c2&0xF)<<2)|((c3&0xC0)>>6));

out+=base64EncodeChars.charAt(c3&0x3F);

}

returnout;

}

//64解密

functionbase64decode(str){

varc1,c2,c3,c4;

vari,len,out;

len=str.length;

i=0;

out="";

while(i

/*c1*/

do{

c1=base64DecodeChars[str.charCodeAt(i++)&0xff];

}while(i

if(c1==-1)

break;

/*c2*/

do{

c2=base64DecodeChars[str.charCodeAt(i++)&0xff];

}while(i

if(c2==-1)

break;

out+=String.fromCharCode((c1<<2)|((c2&0x30)>>4));

/*c3*/

do{

c3=str.charCodeAt(i++)&0xff;

if(c3==61)

returnout;

c3=base64DecodeChars[c3];

}while(i

if(c3==-1)

break;

out+=String.fromCharCode(((c2&0XF)<<4)|((c3&0x3C)>>2));

/*c4*/

do{

c4=str.charCodeAt(i++)&0xff;

if(c4==61)

returnout;

c4=base64DecodeChars[c4];

}while(i

if(c4==-1)

break;

out+=String.fromCharCode(((c3&0x03)<<6)|c4);

}

returnout;

}

用户名:

密  码:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 法学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1