1、计算机网络安全实验报告林科大版 课程实训报告书学生姓名: 黄兵新 学 号: 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实验四数字签名的
2、实现 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环境掌握数字证书的管理实验原理: 实验步骤: 1 java安全机制(JVM
3、,沙袋,安全验证码)。2 java的安全机制的架构(1).java加密体系结构(JCA,Java Cryptography Architecture) 构成JCA的类和接口: Java.SeCuritv:定义即插即用服务提供者实现功能扩充的框架与加解密功能调用API的核心类和接口组。 Java.SeCuritv.Cert:一组证书管理类和接口。 Java.security.interfaces:一组封装DSA与RSA的公开和私有密钥的接口。 Java.SeCurity.SpeC:描述公开和私有密钥算法与参数指定的类和接口。用JCA提供的基本加密功能接口可以开发实现含消息摘要、数字签名、密钥生成
4、、密钥转换、密钥库管理、证书管理和使用等功能的应用程序。(2).Java加密扩展(JCE,Java Cryptography Extension) 构成JCE的类和接口: Javax.cryt:提供对基本的标准加密算法的实现,包括DEs,三重DEs(Triple DEs),基于口令(PasswordBasedEncryptionstandard)的DES,Blowfish。 Javax.crypto.interfaces:支持Diffie一Hell-man密钥。 Javax.cryPto.spec:定义密钥规范与算法参数规范。(3).Java安全套接扩展(JSSE,Java Secure So
5、cket1 Extension)JSSE提供了实现SSL通信的标准Java API。 JSSE vl.o结构包括下列包: .J.SSI:包含JSSE API的一组核心类和接口。 .J:支持基本客户机套接与服务器套接工厂功能所必需的。 .Javax.SeCuritv.Cert:支持基本证书管理功能所必需的。3、数字证书的生成和管理 (1)、输入:keytool -genkey -alias zy -keyalg DSA -keystore zhang按提示分别输入:密码,用户名,地区市,省地区,国家区域号。最后输入:y保存。结果如下: (2)、查看信息:keytool -list -v -key
6、store zhang显示结果:(3)将密钥保存到123.cer文件中:keytool -export -alias zy -keystore zhang -file 123.cer(4)、打开当前文件夹中123.cer文件。显示如下:实验中遇到的问题及解决方法:生成的cer文件打开不了。解决方法:换台机器实验总结:1、了解java安全机制和数字证书的生成及管理工作。2、掌握了keytool工具的使用。实验后的思考:1、进一步了解keytool工具的使用。2、如何利用java语言去调用生成的数字证书?实验二对称密码加密算法的实现实验名称:对称加密算法的实现实验目的:1、了解密码体制基本原理;2
7、、掌握运用java平台实现对称加密的相关的类和使用方法;实验要求:1、了解对称加密体制的基本原理;2、了解加密体制中密钥的随机生成的实现方法和重要性;3、了解DESEDE算法,并运行此算法实现对字符串的加解密。实验步骤:1、利用KeyGenerator类中的getInstance方法生成一个指定算法的(对称)密钥,具体方法:import java.security.InvalidKeyException;import java.security.Key;import java.security.NoSuchAlgorithmException;import javax.crypto.Ciphe
8、r;import javax.crypto.KeyGenerator;import javax.crypto.NoSuchPaddingException;public class SimpleExample /* * param args */ public static void main(String args) / TODO Auto-generated method stub try KeyGenerator keyGenerator = KeyGenerator.getInstance(TripleDES);/生成一个TripleDES算法的密钥 keyGenerator.init
9、(112);/指定密钥的长度为128 Key key = keyGenerator.generateKey();/初始化一个Key对象,获取keyGenerator生成的的密钥; Cipher cipher = Cipher.getInstance(TripleDES/ECB/PKCS5Padding);/生成一个实现DES和ECB转换的 Cipher 对象。 cipher.init(Cipher.ENCRYPT_MODE, key);/用于将 cipher 初始化为解密模式的常量。 String text=23464968732855466; byte plaintext = text.ge
10、tBytes(UTF8); /编码方式的转换; / 输出明文 System.out.println(nPlaintext: ); for (int i=0;iplaintext.length;i+) System.out.print(plaintexti+ ); / 输出密文 byte ciphertext = cipher.doFinal(plaintext); / Print out the ciphertext System.out.println(nnCiphertext: ); for (int i=0;iciphertext.length;i+) System.out.print(
11、ciphertexti+ ); / 对cipher进行初始化为加密模式 cipher.init(Cipher.DECRYPT_MODE, key); / Perform the decryption byte decryptedText = cipher.doFinal(ciphertext); String output = new String(decryptedText,UTF8); System.out.println(nnDecrypted text: +output); catch (NoSuchAlgorithmException e) / TODO Auto-generated
12、 catch block e.printStackTrace(); catch (NoSuchPaddingException e) / TODO Auto-generated catch block e.printStackTrace(); catch (InvalidKeyException e) / TODO Auto-generated catch block e.printStackTrace(); catch(Exception e) e.printStackTrace(); 2、text文本的内容不同,产生的密码!显示内容如下:实验结论:1、了解keyGenerator、Ciph
13、er类的使用,具体掌握getInstance()、doFinal()方法等 。2、进一步学习Package:java.security中其它关于生密钥的方法。实验三消息摘要的生成和管理实验名称消息摘要的生成和管理实验目的2.1 了解消息摘要的基本原理2.2 利用java平台对文件生成消息摘要实验要求3.1 了解消息摘要的基本原理及其在安全体系中的作用3.2 了解Hash函数及其重要性3.3采用MD5算法对文件生成消息摘要。实验步骤:import java.io.*;import java.security.*;import java.util.*;public class MD5 privat
14、e String inStr; private MessageDigest md5; private MD5(String inStr) this.inStr=inStr; try this.md5=MessageDigest.getInstance(MD5); catch(Exception e) System.out.println(e.toString(); e.printStackTrace(); public String compute() char charArray=this.inStr.toCharArray(); byte byteArray=new bytecharArr
15、ay.length; for (int i = 0; i charArray.length; i+) byteArrayi=(byte)charArrayi; byte md5Bytes=this.md5.digest(byteArray); StringBuffer hexValue=new StringBuffer(); for (int i = 0; i md5Bytes.length; i+) int val=(int)md5Bytesi&0xff; if(val16) hexValue.append(0); hexValue.append(Integer.toHexString(va
16、l); return hexValue.toString(); public static void main(String args) File f=new File(D:+File.separator+test.txt); / System.out.println(f.getName(); getFileStr s=new getFileStr(); MD5 md5=new MD5(s.getStr(f); String postString=pute(); System.out.println(加密后的内容:n+postString); /获取文件内容的classclass getFil
17、eStr public String getStr(File f) String temp=; try FileInputStream in=new FileInputStream(f); BufferedInputStream bis=new BufferedInputStream(in); byte c=new byte64; int n=0; while(n=bis.read(c)!=-1) temp=new String(c,0,n); System.out.println(原文内容:n+temp); return temp; catch (Exception e) return te
18、mp; 运行结果:实验结论:掌握了MD5对文件中的内容进行加密的过程。实验四数字签名的实现实验名称数字签名的生成和管理实验目的2.1 了解数字签名的基本原理2.2 了解数字签名的基本知识:消息摘要和公钥密钥体制。2.3 利用java平台实现数字签名实验要求3.1 了解数字签名基本原理及其在安全体系中的作用3.2 对密钥进行数字签名。实验步骤:import java.security.*;public class DigitialSignature /* * param args * author huangbingxin */ public static void main(String ar
19、gs) String msg = huangbingxin编写的数字签名; System.out.println(原文是:n + msg); byte msgBytes = msg.getBytes(); KeyPair key=null; Signature sig=null; byte signatureBytes = null; / 形成RSA密钥对 try KeyPairGenerator keyGen = KeyPairGenerator.getInstance(RSA); keyGen.initialize(1024); / 生成公钥和私钥对 key = keyGen.genera
20、teKeyPair(); /实例化Signature,用于产生数字签名,指定RSA和SHA算法 sig=Signature.getInstance(SHA1WithRSA); /得到私钥 PrivateKey privateKey=key.getPrivate(); /用私钥来初始化数字签名对象 sig.initSign(privateKey); /对msgBytes实施签名 sig.update(msgBytes); signatureBytes=sig.sign(); String signature=new String(signatureBytes); System.out.print
21、ln(签名是:n+signature); catch (Exception e) e.printStackTrace(); /使用公钥验证 PublicKey publicKey=key.getPublic(); try sig.initVerify(publicKey); /对msgBytes重新实施签名 sig.update(msgBytes); if(sig.verify(signatureBytes) System.out.print(签名成功!); else System.out.print(签名不成功!); catch (Exception e) / TODO Auto-gener
22、ated catch block e.printStackTrace(); 运行结果:实验结论:掌握了利用RSA和SHA实施数字签名的方法.实验五:非对称密钥实验名称:非对称密钥实验目的:1 了解非对称密钥基本原理;2 掌握运用java平台实现非对称加密的相关的类和使用实验要求:1了解非对称加密体制的基本原理;2了解RSA算法,并运行此算法实现对字符串的加解密。实验步骤:非对称密钥是用公钥加密,私钥解密。现以字符串“I have a friend!”为例,介绍RSA算法的加、解密。这里用文件rsapbkey.dat保存公钥,文件rsapvkey.dat保存私钥。1)、原代码如下:import
23、java.io.*;import java.math.*;import java.security.interfaces.*;/* * author huangbingxin */public class EncryptData /* * 功能:用JAVA实现RSA算法加密、解密的原理和过程 * 算法描述: m:明文; c:密文; p,q: * 两个大素数 n=p*q;FI(n)=(p-1)(q-1); * 加密密钥(私钥):e; * 解密密钥(公钥):d; *d*e=1modFI(n) * 加密过程: * c=me(modn); 解密过程: m=cd(modn); */ public sta
24、tic void main(String args) String s=HolleWorld!; /* * 加密过程 */ try FileInputStream fos=new FileInputStream(rsapbkey.dat);/保存公钥 ObjectInputStream oos=new ObjectInputStream(fos);/声明一个流文件 RSAPublicKey pbk=(RSAPublicKey)oos.readObject();/得到RAS公钥描述结构类 BigInteger e=pbk.getPublicExponent();/得到公钥 BigInteger
25、n=pbk.getModulus();/得到公共模 System.out.println(e=+e); System.out.println(n=+n); byte bb=s.getBytes(UTF8); BigInteger m=new BigInteger(bb); BigInteger c=m.modPow(e, n);/加密 System.out.println(c=+c); String cs=c.toString(); BufferedWriter out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream
26、(rsapbkey.dat); out.write(cs, 0, cs.length(); catch (Exception e) / TODO Auto-generated catch block e.printStackTrace(); / 解密过程 try BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(rsapvkey.dat); String ctext=in.readLine(); BigInteger c=new BigInteger(ctext); FileInputS
27、tream fi=new FileInputStream(rsapbkey.dat); ObjectInputStream oos2=new ObjectInputStream(fi); RSAPrivateCrtKey pck=(RSAPrivateCrtKey)oos2.readObject(); BigInteger d=pck.getPrivateExponent(); BigInteger n=pck.getModulus(); System.out.println(d=+d); System.out.println(n=+n); BigInteger m=c.modPow(d, n
28、); System.out.println(m=+m); byte mt=m.toByteArray(); System.out.println(PlainTextis); for(int i=0;imt.length;i+) System.out.print(mti); catch (Exception e) / TODO Auto-generated catch block e.printStackTrace(); 结果:实验结论:掌握对用java实现RSA算法的加、解密操作。实验六:Windows口令破解实验名称:Windows口令破解实验目的:1.了解Windows口令破解原理2.能够运用工具实现口令破解;实验原理:一口令破解方法 口令破解主要有两种方法:字典破解和暴力破解。 字典破解是指通过破解者对管理员的了解,猜测其可能使用某些信息作为密码,例如其姓名、生日、电话号码等,同时结合对密码长
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1