计算机网络安全实验报告林科大版Word文档格式.docx

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

计算机网络安全实验报告林科大版Word文档格式.docx

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

计算机网络安全实验报告林科大版Word文档格式.docx

实验目的12

实验要求12

12

运行结果:

13

实验五:

非对称密钥14

14

16

实验六:

Windows口令破解17

17

实验原理:

18

19

实验七网络嗅探20

实验目的20

实验原理20

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<

plaintext.length;

i++){

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

}

//输出密文

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

//Printouttheciphertext

\n\nCiphertext:

ciphertext.length;

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

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

cipher.init(Cipher.DECRYPT_MODE,key);

//Performthedecryption

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

Stringoutput=newString(decryptedText,"

\n\nDecryptedtext:

+output);

}catch(NoSuchAlgorithmExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(NoSuchPaddingExceptione){

}catch(InvalidKeyExceptione){

}catch(Exceptione){

}

}

}

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"

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

publicStringcompute(){

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

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

for(inti=0;

i<

charArray.length;

i++){

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

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

StringBufferhexValue=newStringBuffer();

md5Bytes.length;

intval=(int)md5Bytes[i]&

0xff;

if(val<

16)hexValue.append("

0"

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

returnhexValue.toString();

Filef=newFile("

D:

"

+File.separator+"

test.txt"

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

getFileStrs=newgetFileStr();

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

StringpostString=pute();

加密后的内容:

\n"

+postString);

//获取文件内容的class

classgetFileStr{

publicStringgetStr(Filef){

Stringtemp="

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("

原文内容:

+temp);

returntemp;

}catch(Exceptione){

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

实验四 数字签名的实现

数字签名的生成和管理

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

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

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

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

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

3.2对密钥进行数字签名。

publicclassDigitialSignature{

*@authorhuangbingxin

Stringmsg="

huangbingxin编写的数字签名"

原文是:

+msg);

bytemsgBytes[]=msg.getBytes();

KeyPairkey=null;

Signaturesig=null;

byte[]signatureBytes=null;

//形成RSA密钥对

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("

签名是:

+signature);

//使用公钥验证

PublicKeypublicKey=key.getPublic();

sig.initVerify(publicKey);

//对msgBytes重新实施签名

if(sig.verify(signatureBytes)){

System.out.print("

签名成功!

}else{

签名不成功!

}

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

非对称密钥

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

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

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

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

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

现以字符串“Ihaveafriend!

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

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

1)、原代码如下:

importjava.math.*;

importjava.security.interfaces.*;

/**

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

Strings="

HolleWorld!

/*

*加密过程

*/

FileInputStreamfos=newFileInputStream("

rsapbkey.dat"

//保存公钥

ObjectInputStreamoos=newObjectInputStream(fos);

//声明一个流文件

RSAPublicKeypbk=(RSAPublicKey)oos.readObject();

//得到RAS公钥描述结构类

BigIntegere=pbk.getPublicExponent();

//得到公钥

BigIntegern=pbk.getModulus();

//得到公共模

e="

+e);

n="

+n);

bytebb[]=s.getBytes("

BigIntegerm=newBigInteger(bb);

BigIntegerc=m.modPow(e,n);

//加密

c="

+c);

Stringcs=c.toString();

BufferedWriterout=newBufferedWriter(newOutputStreamWriter(newFileOutputStream("

)));

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

//解密过程

BufferedReaderin=newBufferedReader(newInputStreamReader(newFileInputStream("

rsapvkey.dat"

Stringctext=in.readLine();

BigIntegerc=newBigInteger(ctext);

FileInputStreamfi=newFileInputStream("

ObjectInputStreamoos2=newObjectInputStream(fi);

RSAPrivateCrtKeypck=(RSAPrivateCrtKey)oos2.readObject();

BigIntegerd=pck.getPrivateExponent();

BigIntegern=pck.getModulus();

d="

+d);

BigIntegerm=c.modPow(d,n);

m="

+m);

byte[]mt=m.toByteArray();

PlainTextis"

for(inti=0;

mt.length;

i++){

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

结果:

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

Windows口令破解

1.了解Windows口令破解原理

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

一.口令破解方法

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

字典破解和暴力破解。

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

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

当前位置:首页 > 高等教育 > 院校资料

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

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