计算机网络安全实验报告林科大版.docx
- 文档编号:9600729
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:25
- 大小:157.02KB
计算机网络安全实验报告林科大版.docx
《计算机网络安全实验报告林科大版.docx》由会员分享,可在线阅读,更多相关《计算机网络安全实验报告林科大版.docx(25页珍藏版)》请在冰豆网上搜索。
计算机网络安全实验报告林科大版
课程实训报告书
学生姓名:
黄兵新学号:
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.能够运用工具实现口令破解; 实验原理: 一.口令破解方法 口令破解主要有两种方法: 字典破解和暴力破解。 字典破解是指通过破解者对管理员的了解,猜测其可能使用某些信息作为密码,例如其姓名、生日、电话号码等,同时结合对密码长
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 网络安全 实验 报告 林科大版