信息安全系统实验报告材料Word文件下载.docx

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

信息安全系统实验报告材料Word文件下载.docx

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

信息安全系统实验报告材料Word文件下载.docx

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的密文进行解密。

三、实验结果分析

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

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

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

四、心得体会

教师签名:

年月日

基于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));

请输入素数q:

this.q=Integer.parseInt(br);

primenumber(this.q));

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

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

System.out.println("

这两个素数的乘积为p*q:

"

+this.n);

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

+this.m);

//求最大公约数

publiclonggcd(longa,longb){

longgcd;

if(b==0)gcd=a;

elsegcd=gcd(b,a%b);

gcd:

+gcd);

returngcd;

//输入公匙

publicvoidgetPublic_key()throwsException

do

请输入一个公钥的值,这个值要求小于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));

公钥为:

+this.public_key);

}

//计算得到密匙

publicvoidgetPrivate_key()

longvalue=1;

for(longi=1;

;

value=i*this.m+1;

value:

+value);

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

&

(value/this.public_key<

this.m))

this.private_key=value/this.public_key;

breakouter;

产生的一个私钥为:

+this.private_key);

//输入明文

publicvoidgetText()throwsException

请输入明文:

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();

输入明文为:

+this.text);

//加密

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

所得的密文为:

+this.secretword);

//解密

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

解密后所得的明文为:

+this.word);

publicstaticvoidmain(String[]args)throwsException

Rsat=newRsa();

t.inputPQ();

t.getPublic_key();

t.getPrivate_key();

t.pascolum()}

基于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"

>

html>

head>

metahttp-equiv="

Content-Type"

content="

title>

用户登录<

/title>

scripttype="

text/javascript"

functioncheckInsert(){

varname=document.getElementById("

username"

).value;

varpwd=document.getElementById("

userpwd"

if(name==null||name=="

){

alert("

请输入您的账号!

document.getElementById("

).focus();

returnfalse;

if(pwd==null||pwd=="

请输入您的密码!

base64encode(pwd);

enterform.submit();

returntrue;

//64加密

functionbase64encode(str){

varout,i,len;

varc1,c2,c3;

len=str.length;

i=0;

out="

while(i<

len){

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++);

out+=base64EncodeChars.charAt(((c1&

0x3)<

4)|((c2&

0xF0)>

4));

out+=base64EncodeChars.charAt((c2&

0xF)<

="

c3=str.charCodeAt(i++);

out+=base64EncodeChars.charAt(((c2&

2)|((c3&

0xC0)>

6));

out+=base64EncodeChars.charAt(c3&

0x3F);

returnout;

//64解密

functionbase64decode(str){

varc1,c2,c3,c4;

vari,len,out;

/*c1*/

do{

c1=base64DecodeChars[str.charCodeAt(i++)&

0xff];

}while(i<

len&

c1==-1);

if(c1==-1)

/*c2*/

c2=base64DecodeChars[str.charCodeAt(i++)&

c2==-1);

if(c2==-1)

out+=String.fromCharCode((c1<

2)|((c2&

0x30)>

/*c3*/

c3=str.charCodeAt(i++)&

if(c3==61)

c3=base64DecodeChars[c3];

c3==-1);

if(c3==-1)

out+=String.fromCharCode(((c2&

0XF)<

4)|((c3&

0x3C)>

2));

/*c4*/

c4=str.charCodeAt(i++)&

if(c4==61)

c4=base64DecodeChars[c4];

c4==-1);

if(c4==-1)

out+=String.fromCharCode(((c3&

0x03)<

6)|c4);

/script>

/head>

bodybgcolor="

#FFFFFF"

formid="

enterform"

action="

servlet/loginCheck"

<

tablewidth="

317"

height="

129"

border="

0"

cellpadding="

cellspacing="

<

tr>

<

tdwidth="

106"

align="

right"

>

用户名:

/td>

tdcolspan="

2"

valign="

middle"

inputname="

id="

type="

text"

/>

/tr>

tdalign="

密&

nbsp;

码:

password"

/table>

inputtype="

button"

value="

提交"

onclick="

checkInsert();

inputty

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

当前位置:首页 > PPT模板 > 可爱清新

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

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