1、网络安全技术实验报告中南林业科技大学实验报告课程名称: 计算机网络安全技术 专业班级:2014 级计算机科学与技术 2班姓 名:孙晓阳/学 号:(实验一 java 安全机制和数字证书的管理一 实验名称java 安全机制和数字证书的管理二 实验目的 了解 java 的安全机制的架构和相关的知识; 利用 java 环境掌握数字证书的管理三 实验内容 java 安全机制(JVM,沙袋,安全验证码)。& java 的安全机制的架构 加密体系结构(JCA,Java Cryptography Architecture) 构成 JCA 的类和接口:定义即插即用服务提供者实现功能扩充的框架与加解密功能调用 A
2、PI 的核心类和接口组。一组证书管理类和接口。一组封装 DSA 与 RSA 的公开和私有密钥的接口。描述公开和私有密钥算法与参数指定的类和接口。用 JCA 提供的基本加密功能接口可以开发实现含消息摘要、数字签名、密钥生成、密钥转换、密钥库管理、证书管理和使用等功能的应用程序。 加密扩展(JCE,Java Cryptography Extension) 构成 JCE 的类和接口:提供对基本的标准加密算法的实现,包括 DEs,三重 DEs(Triple DEs),基于口令(PasswordBasedEncryptionstandard)的 DES,Blowfish。(支持 Diffie 一 Hel
3、l-man 密钥。 定义密钥规范与算法参数规范。 安全套接扩展(JSSE,Java Secure Socket1 Extension)JSSE 提供了实现 SSL 通信的标准 Java API。JSSE 结构包括下列包:.包含 JSSE API 的一组核心类和接口。.:支持基本客户机套接与服务器套接工厂功能所必需的。.支持基本证书管理功能所必需的。目前 JSSE 的最新版本 可以在: 数字证书的生成和管理1.了解公钥加密体制(非对称密码体制的基本原理)。2.理解数字证书的基本概念及其在安全体制中的应用。3.理解密钥的生成和管理。4.掌握利用 keytool 工具 实现数字证书的管理四 实验结果
4、和分析 命令输入1.证书的显示keytool -genkey -alias myca -keyalg RSA -keysize 1024 -keystore mystore -validity 4000(密钥的生成和存储)2.显示证书的详细信息keytool -list -v -keystore mystore3.将证书导出到证书文件,keytool -export -alias myca -keystore mycalib -file 把证书库 mystore 中的别名为 mycaa 的证书导出到 证书文件中,它包含证书主体的信息及证书的公钥,不包括私钥,可以公开。 分析1、|2、密钥表示J
5、ava用接口表示密钥。Key接口由包的privateKey与 publicKey接口和巧pto包(属于JCE)中的SecretKey接口扩展。privateKey与 publicKey表示公开密钥算法的的私有与公开密钥,SecretKey表示对称密钥。每个Key对象与惟一算法相关联,用Key接口中的getAlgorithmO可以知道密钥对应的算法名。3、密钥管理和数字证书密钥库(Key Store)是存放私有密钥.公开密钥与证书的容器。Java平台自带有专属的安全密钥库,称为Java密钥库(JKS,Java Key Store)。存放在密钥库中可能有两种项目:密钥项目一一保存私有密钥/公开密钥
6、对,公开密钥存放在格式的专用证书中。信任证书项目一一保存包含另一方公开密钥的证书。一个密钥库可以存放多个密钥项目和多个信任证书项目,密钥库中每个项目与唯一别名(alias)关联。Java对密钥库和密钥项目提供用口令(加密)保护。Java平台提供的keytool程序可以从命令行管理密钥库。用以下命令可以生成银行和客户的私有密钥/公开密钥对: keytool -genkey -keystore -alidity 720表示密钥库文件名。在执行命令时 keytool 会提示输入一些个人信息,用于生成专用证书的主题|(Subject),主题包含了一些证书持有人的信息。本文提出的方案,客户证书用其中CN
7、域保存支付帐号。用keytool -export -keystore -file -rfc,可以输出以为文件名的信任数字证书。可以把信任证书发放给信息的接收方。在应用程序中,使用类访问和管理密钥库,Keystore类可以读取密钥库中的密钥和证书信息。Keystore类是个抽象类,由加密服务提供者(CsP)特定实现方法实现。Keystore对象实例用静态方法getlnstance(string type)生成。tyPe为密钥库类型,Java平台默认密钥库类型为 JKS。生成 Keystore对象后,用 load(Inputstreamstream,charpassword)从指定输入流装入 Ke
8、ystore 对象,口令 Password用于验证密钥库数据完整性。用getKey(Stringalias,charllpassword)返回别名为alias的密钥项目,password是密钥的解密口令。用getCertificate(String alias) 返回别名为alias的证书项目,getCertificate返回一 对象,Certificate对象用getpublicKeyo可以读出证书中的公开密钥。五 小结数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在 Internet 上验证通信实体身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由
9、权威机构 CA 机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。实验二 对称密码加密算法的实现一 实验名称对称加密算法的实现二 实验目的 了解密码体制基本原理;【 掌握运用 java 平台实现对称加密的相关的类和使用方法;三 实验内容 了解对称加密体制的基本原理; 了解加密体制中密钥的随机生成的实现方法和重要性; 了解 DESEDE 算
10、法,并运行此算法实现对字符串的加解密。四 实验结果和分析 说明duichenjiami 程序将创建一个 DESEDE 密钥,用它来加密一个字符串,然后对加密的字符串进行解密,最后把密方文和明文一起显示在屏幕上。由于每次执行时所采用的密钥是不同的,每一次运行所产生的密钥都不一样。 实验代码 import .*; import .*;/*This class creates a TripleDES key, encrypts some text,prints the ciphertext, then decrypts the text and * prints that.,*It requires
11、 a JCE-compliant TripleDES engine, like Cryptix JCE.*/ public class SimpleExample public static void main (String args) throws Exception if != 1) Usage: java SimpleExample text); (1); String text = args0;Generating a TripleDES key.); import .*;/*This class creates a TripleDES key, encrypts some text
12、, * prints the ciphertext, then decrypts the text and * prints that.*It requires a JCE-compliant TripleDES engine, like Cryptix JCE.*/ public class duichenjiami public static void main (String args) throws Exception if != 1) Usage: java duichenjiami text); (1); String text = args0;。Generating a Trip
13、leDES key.); import .*; import .*; import public class EncryptData public static void main(String args) throws Exception;/*?*SignatureExample*Simple example of using a digital signature.*This class creates an RSA key pair and then signs the text*of the first argument passed to it. It displays the si
14、gnature * in BASE64, and then verifies the signature with the corresponding * public key.*/ public class SignatureExample public static void main (String args) throws Exception if != 1) Usage: java SignatureExample Im Sunxyang,and text to be signed);(1);Generating RSA key pair.);KeyPairGenerator kpg
15、 = (RSA); (1024);KeyPair keyPair = ();Done generating key pair.);etBytes(UTF8);ncode(signatureBytes);Well need to reinitialize This (); else nSignature did not match.); 实验结果五 小结数字签名是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同
16、时也是对信息的发送者发送信息真实性的一个有效证明。数字签名是非对称密钥加密技术与数字摘要技术的应用。总 结通过计算机网络安全技术这门课的学习和实践,让我学到了很多东西,不仅使我在理论上对网络有了全新的认识,在实践能力上也得到了提高,真正地做到了学以致用,更学到了很多做人的道理,对我来说受益非浅。在学习的同时,也进一步懂得了合作的重要性,过程中自己有很多的不懂,很多的问题,都是大家一起商量解决的。这次实验让我明白了实验的主要目的是让我们通过不断的学习来积累经验,进而才能把书本的知识转化为技能。实践出真理,实验的过程确实是有些累但是累得有价值。学海无涯,好多好多的东西在向我们招手,等待我们去努力的
17、学习。在以后的工作、生活和学习中,发展自己的优势,弥补自己的不足和缺陷。通过学习,我学到了很多。接触到了一些计算机加密算法和方法,让我对计算机网络有了全新的认识,经过理论与实际结合,让我大开眼界。实验是每一个大学生必须拥有的一段经历,它使我们在实践中了解自己所学的知识在实际操作中的意义,明白了要多了解相关知识,多思考,多提问题,多问几个为什么,要学以致用,计算机网络使学习、生活、工作的资源消耗大为降低。我们是新一代的人用的都是高科技,也随着现在的社会日新月异,高科技的发展,只有掌握一定的计算机知识,才能更好的帮助我们。不过有时也要动我们的脑子,要个人亲身去体会,去实践,把各项命令的位置,功能,用法记熟,做熟。提高我们整体的知识,打好基础。这对于我以后学习、找工作也真是受益菲浅,相信这些宝贵的经验会成为我今后成功的重要的基石。