计算机网络安全实验报告林科大版.docx

上传人:b****8 文档编号:9600729 上传时间:2023-02-05 格式:DOCX 页数:25 大小:157.02KB
下载 相关 举报
计算机网络安全实验报告林科大版.docx_第1页
第1页 / 共25页
计算机网络安全实验报告林科大版.docx_第2页
第2页 / 共25页
计算机网络安全实验报告林科大版.docx_第3页
第3页 / 共25页
计算机网络安全实验报告林科大版.docx_第4页
第4页 / 共25页
计算机网络安全实验报告林科大版.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

计算机网络安全实验报告林科大版.docx

《计算机网络安全实验报告林科大版.docx》由会员分享,可在线阅读,更多相关《计算机网络安全实验报告林科大版.docx(25页珍藏版)》请在冰豆网上搜索。

计算机网络安全实验报告林科大版.docx

计算机网络安全实验报告林科大版

课程实训报告书

 

学生姓名:

黄兵新学号:

20084749

学 院:

计算机与信息工程

专业年级:

2009计算机科学与技术(对口)1班

题目:

计算机网络安全实验报告

指导教师:

王楚正

 

20012年4月27日

目录 

实验一:

java安全机制和数字证书的管理3

实验名称:

3

实验目的:

3

实验步骤:

3

实验中遇到的问题及解决方法:

5

实验总结:

5

实验后的思考:

5

实验二 对称密码加密算法的实现6

实验名称:

6

实验目的:

6

实验要求:

6

实验步骤:

6

实验结论:

8

实验三 消息摘要的生成和管理9

实验名称9

实验目的9

实验要求9

实验步骤:

9

实验四 数字签名的实现12

实验名称12

实验目的12

实验要求12

实验步骤:

12

运行结果:

13

实验结论:

13

实验五:

非对称密钥14

实验名称:

14

实验目的:

14

实验要求:

14

实验步骤:

14

实验结论:

16

实验六:

Windows口令破解17

实验名称:

17

实验目的:

17

实验原理:

17

实验步骤:

18

实验结论:

19

实验七网络嗅探20

实验目的20

实验原理20

实验一:

java安全机制和数字证书的管理

实验名称:

java安全机制和数字证书的管理

实验目的:

1了解java的安全机制的架构和相关的知识;

2利用java环境掌握数字证书的管理实验原理:

实验步骤:

1java安全机制(JVM,沙袋,安全验证码)。

2java的安全机制的架构

(1).java加密体系结构(JCA,JavaCryptographyArchitecture)

构成JCA的类和接口:

Java.SeCuritv:

定义即插即用服务提供者实现功能扩充的框架与加解密功能调用API的核心类和接口组。

Java.SeCuritv.Cert:

一组证书管理类和接口。

Java.security.interfaces:

一组封装DSA与RSA的公开和私有密钥的接口。

Java.SeCurity.SpeC:

描述公开和私有密钥算法与参数指定的类和接口。

用JCA提供的基本加密功能接口可以开发实现含消息摘要、数字签名、密钥生成、密钥转换、密钥库管理、证书管理和使用等功能的应用程序。

(2).Java加密扩展(JCE,JavaCryptographyExtension)

构成JCE的类和接口:

Javax.cryt:

提供对基本的标准加密算法的实现,包括DEs,三重DEs(TripleDEs),基于口令(PasswordBasedEncryptionstandard)的DES,Blowfish。

   Javax.crypto.interfaces:

支持Diffie一Hell-man密钥。

   Javax.cryPto.spec:

定义密钥规范与算法参数规范。

(3).Java安全套接扩展(JSSE,JavaSecureSocket1Extension)JSSE提供了实现SSL通信的标准JavaAPI。

JSSEvl.o结构包括下列包:

.J.SSI:

包含JSSEAPI的一组核心类和接口。

.J:

支持基本客户机套接与服务器套接工厂功能所必需的。

.Javax.SeCuritv.Cert:

支持基本证书管理功能所必需的。

3、数字证书的生成和管理

(1)、输入:

keytool-genkey-aliaszy-keyalgDSA-keystorezhang

按提示分别输入:

密码,用户名,地区市,省地区,国家区域号。

最后输入:

y保存。

结果如下:

(2)、查看信息:

>keytool-list-v-keystorezhang

显示结果:

(3)将密钥保存到123.cer文件中:

>keytool-export-aliaszy-keystorezhang-file123.cer

 

(4)、打开当前文件夹中123.cer文件。

显示如下:

实验中遇到的问题及解决方法:

生成的cer文件打开不了。

解决方法:

换台机器

实验总结:

1、了解java安全机制和数字证书的生成及管理工作。

2、掌握了keytool工具的使用。

实验后的思考:

1、进一步了解keytool工具的使用。

2、如何利用java语言去调用生成的数字证书?

实验二 对称密码加密算法的实现

实验名称:

对称加密算法的实现

实验目的:

1、了解密码体制基本原理;

2、掌握运用java平台实现对称加密的相关的类和使用方法;

实验要求:

1、了解对称加密体制的基本原理;

2、了解加密体制中密钥的随机生成的实现方法和重要性;

3、了解DESEDE算法,并运行此算法实现对字符串的加解密。

实验步骤:

1、利用KeyGenerator类中的getInstance方法生成一个指定算法的(对称)密钥,具体方法:

importjava.security.InvalidKeyException;

importjava.security.Key;

importjava.security.NoSuchAlgorithmException;

importjavax.crypto.Cipher;

importjavax.crypto.KeyGenerator;

importjavax.crypto.NoSuchPaddingException;

publicclassSimpleExample{

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

try{

KeyGeneratorkeyGenerator=KeyGenerator.getInstance("TripleDES");//生成一个TripleDES算法的密钥

keyGenerator.init(112);//指定密钥的长度为128

Keykey=keyGenerator.generateKey();//初始化一个Key对象,获取keyGenerator生成的的密钥;

Ciphercipher=Cipher.getInstance("TripleDES/ECB/PKCS5Padding");//生成一个实现DES和ECB转换的Cipher对象。

cipher.init(Cipher.ENCRYPT_MODE,key);//用于将cipher初始化为解密模式的常量。

Stringtext="23464968732855466";

byte[]plaintext=text.getBytes("UTF8");//编码方式的转换;

//输出明文

System.out.println("\nPlaintext:

");

for(inti=0;i

System.out.print(plaintext[i]+"");

}

//输出密文

byte[]ciphertext=cipher.doFinal(plaintext);

//Printouttheciphertext

System.out.println("\n\nCiphertext:

");

for(inti=0;i

System.out.print(ciphertext[i]+"");

}

//对cipher进行初始化为加密模式

cipher.init(Cipher.DECRYPT_MODE,key);

//Performthedecryption

byte[]decryptedText=cipher.doFinal(ciphertext);

Stringoutput=newString(decryptedText,"UTF8");

System.out.println("\n\nDecryptedtext:

"+output);

 

}catch(NoSuchAlgorithmExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(NoSuchPaddingExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(InvalidKeyExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(Exceptione){

e.printStackTrace();

}

}

}

2、text文本的内容不同,产生的密码!

显示内容如下:

实验结论:

1、了解keyGenerator、Cipher类的使用,具体掌握getInstance()、doFinal()方法等。

2、进一步学习Package:

java.security中其它关于生密钥的方法。

实验三 消息摘要的生成和管理

实验名称

消息摘要的生成和管理

实验目的

2.1了解消息摘要的基本原理

2.2利用java平台对文件生成消息摘要

实验要求

3.1了解消息摘要的基本原理及其在安全体系中的作用

3.2了解Hash函数及其重要性

3.3 采用MD5算法对文件生成消息摘要。

实验步骤:

importjava.io.*;

importjava.security.*;

importjava.util.*;

publicclassMD5{

privateStringinStr;

privateMessageDigestmd5;

privateMD5(StringinStr){

this.inStr=inStr;

try{

this.md5=MessageDigest.getInstance("MD5");

}catch(Exceptione){

System.out.println(e.toString());

e.printStackTrace();

}

}

publicStringcompute(){

char[]charArray=this.inStr.toCharArray();

byte[]byteArray=newbyte[charArray.length];

for(inti=0;i

byteArray[i]=(byte)charArray[i];

}

byte[]md5Bytes=this.md5.digest(byteArray);

StringBufferhexValue=newStringBuffer();

for(inti=0;i

intval=(int)md5Bytes[i]&0xff;

if(val<16)hexValue.append("0");

hexValue.append(Integer.toHexString(val));

}

returnhexValue.toString();

}

publicstaticvoidmain(String[]args){

Filef=newFile("D:

"+File.separator+"test.txt");

//System.out.println(f.getName());

getFileStrs=newgetFileStr();

MD5md5=newMD5(s.getStr(f));

StringpostString=pute();

System.out.println("加密后的内容:

\n"+postString);

}

}

//获取文件内容的class

classgetFileStr{

publicStringgetStr(Filef){

Stringtemp="";

try{

FileInputStreamin=newFileInputStream(f);

BufferedInputStreambis=newBufferedInputStream(in);

bytec[]=newbyte[64];

intn=0;

while((n=bis.read(c))!

=-1){

temp=newString(c,0,n);

System.out.println("原文内容:

\n"+temp);

}

returntemp;

}catch(Exceptione){

returntemp;

}

}

}

运行结果:

实验结论:

掌握了MD5对文件中的内容进行加密的过程。

实验四 数字签名的实现

实验名称

数字签名的生成和管理

实验目的

2.1了解数字签名的基本原理

2.2了解数字签名的基本知识:

消息摘要和公钥密钥体制。

2.3 利用java平台实现数字签名

实验要求

3.1了解数字签名基本原理及其在安全体系中的作用

3.2对密钥进行数字签名。

实验步骤:

importjava.security.*;

publicclassDigitialSignature{

/**

*@paramargs

*@authorhuangbingxin

*/

publicstaticvoidmain(String[]args){

Stringmsg="huangbingxin编写的数字签名";

System.out.println("原文是:

\n"+msg);

bytemsgBytes[]=msg.getBytes();

KeyPairkey=null;

Signaturesig=null;

byte[]signatureBytes=null;

//形成RSA密钥对

try{

KeyPairGeneratorkeyGen=KeyPairGenerator.getInstance("RSA");

keyGen.initialize(1024);

//生成公钥和私钥对

key=keyGen.generateKeyPair();

//实例化Signature,用于产生数字签名,指定RSA和SHA算法

sig=Signature.getInstance("SHA1WithRSA");

//得到私钥

PrivateKeyprivateKey=key.getPrivate();

//用私钥来初始化数字签名对象

sig.initSign(privateKey);

//对msgBytes实施签名

sig.update(msgBytes);

signatureBytes=sig.sign();

Stringsignature=newString(signatureBytes);

System.out.println("签名是:

\n"+signature);

}catch(Exceptione){

e.printStackTrace();

}

//使用公钥验证

PublicKeypublicKey=key.getPublic();

try{

sig.initVerify(publicKey);

//对msgBytes重新实施签名

sig.update(msgBytes);

if(sig.verify(signatureBytes)){

System.out.print("签名成功!

");

}else{

System.out.print("签名不成功!

");

}

}catch(Exceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

}

运行结果:

实验结论:

掌握了利用RSA和SHA实施数字签名的方法.

实验五:

非对称密钥

实验名称:

非对称密钥

实验目的:

1了解非对称密钥基本原理;

2掌握运用java平台实现非对称加密的相关的类和使用

实验要求:

1了解非对称加密体制的基本原理;

2了解RSA算法,并运行此算法实现对字符串的加解密。

实验步骤:

非对称密钥是用公钥加密,私钥解密。

现以字符串“Ihaveafriend!

”为例,介绍RSA算法的加、解密。

这里用文件rsapbkey.dat保存公钥,文件rsapvkey.dat保存私钥。

1)、原代码如下:

importjava.io.*;

importjava.math.*;

importjava.security.interfaces.*;

/**

*@authorhuangbingxin

*/

publicclassEncryptData{

/**

*功能:

用JAVA实现RSA算法加密、解密的原理和过程

*算法描述:

m:

明文;c:

密文;p,q:

*两个大素数n=p*q;FI(n)=(p-1)(q-1);

*加密密钥(私钥):

e;

*解密密钥(公钥):

d;*d*e=1modFI(n)

*加密过程:

*c=m^e(modn);解密过程:

m=c^d(modn);

*/

publicstaticvoidmain(String[]args){

Strings="HolleWorld!

";

/*

*加密过程

*/

try{

FileInputStreamfos=newFileInputStream("rsapbkey.dat");//保存公钥

ObjectInputStreamoos=newObjectInputStream(fos);//声明一个流文件

RSAPublicKeypbk=(RSAPublicKey)oos.readObject();//得到RAS公钥描述结构类

BigIntegere=pbk.getPublicExponent();//得到公钥

BigIntegern=pbk.getModulus();//得到公共模

System.out.println("e="+e);

System.out.println("n="+n);

bytebb[]=s.getBytes("UTF8");

BigIntegerm=newBigInteger(bb);

BigIntegerc=m.modPow(e,n);//加密

System.out.println("c="+c);

Stringcs=c.toString();

BufferedWriterout=newBufferedWriter(newOutputStreamWriter(newFileOutputStream("rsapbkey.dat")));

out.write(cs,0,cs.length());

}catch(Exceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

//解密过程

try{

BufferedReaderin=newBufferedReader(newInputStreamReader(newFileInputStream("rsapvkey.dat")));

Stringctext=in.readLine();

BigIntegerc=newBigInteger(ctext);

FileInputStreamfi=newFileInputStream("rsapbkey.dat");

ObjectInputStreamoos2=newObjectInputStream(fi);

RSAPrivateCrtKeypck=(RSAPrivateCrtKey)oos2.readObject();

BigIntegerd=pck.getPrivateExponent();

BigIntegern=pck.getModulus();

System.out.println("d="+d);

System.out.println("n="+n);

BigIntegerm=c.modPow(d,n);

System.out.println("m="+m);

byte[]mt=m.toByteArray();

System.out.println("PlainTextis");

for(inti=0;i

System.out.print(mt[i]);

}

}catch(Exceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

}

结果:

实验结论:

掌握对用java实现RSA算法的加、解密操作。

实验六:

Windows口令破解

实验名称:

Windows口令破解

实验目的:

1.了解Windows口令破解原理

2.能够运用工具实现口令破解;

实验原理:

一.口令破解方法

口令破解主要有两种方法:

字典破解和暴力破解。

字典破解是指通过破解者对管理员的了解,猜测其可能使用某些信息作为密码,例如其姓名、生日、电话号码等,同时结合对密码长

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

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

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

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