中南林业科技大学实验报告课程名称:计算机网络安全技术专业班级:2014 级计算机科学与技术 2班姓名:孙晓阳/学号:(目录实验一java 安全机制和数字证书的管理 (5)一实验名称 (5)二实验目的 (5)三实验内容 (5)四实验结果和分析 (6),命令输入 (6)分析 (7)五小结 (8)实验二对称密码加密算法的实现 (10)一实验名称 (10)二实验目的 (10)三实验内容 (10)?四实验结果和分析 (10)说明 (10)实验代码 (10)实验结果 (13)五小结 (13)实验三非对称密钥 (14)一实验名称 (14){二实验目的 (14)三实验内容 (14)四实验结果和分析 (14)实验代码 (14)实验结果 (15)五小结 (16)实验四数字签名的实现 (17)—一实验名称 (17)二实验目的 (17)三实验内容 (17)四实验结果和分析 (17)实验代码 (17)实验结果 (19)五小结 (19)?总结 (19)实验一java 安全机制和数字证书的管理》一实验名称java 安全机制和数字证书的管理二实验目的了解 java 的安全机制的架构和相关的知识;利用 java 环境掌握数字证书的管理三实验内容java 安全机制(JVM,沙袋,安全验证码)。
&java 的安全机制的架构加密体系结构(JCA,Java Cryptography Architecture) 构成 JCA 的类和接口::定义即插即用服务提供者实现功能扩充的框架与加解密功能调用 API 的核心类和接口组。
一组证书管理类和接口。
一组封装 DSA 与 RSA 的公开和私有密钥的接口。
描述公开和私有密钥算法与参数指定的类和接口。
用 JCA 提供的基本加密功能接口可以开发实现含消息摘要、数字签名、密钥生成、密钥转换、密钥库管理、证书管理和使用等功能的应用程序。
加密扩展(JCE,Java Cryptography Extension) 构成 JCE 的类和接口::提供对基本的标准加密算法的实现,包括 DEs,三重 DEs(Triple DEs),基于口令(PasswordBasedEncryptionstandard)的 DES,Blowfish。
(支持 Diffie 一 Hell-man 密钥。
定义密钥规范与算法参数规范。
安全套接扩展(JSSE,Java Secure Socket1 Extension)JSSE 提供了实现 SSL 通信的标准 Java API。
JSSE 结构包括下列包:.包含 JSSE API 的一组核心类和接口。
.:支持基本客户机套接与服务器套接工厂功能所必需的。
.支持基本证书管理功能所必需的。
目前 JSSE 的最新版本可以在: 数字证书的生成和管理]1.了解公钥加密体制(非对称密码体制的基本原理)。
2..理解数字证书的基本概念及其在安全体制中的应用。
3.理解密钥的生成和管理。
4.掌握利用 keytool 工具实现数字证书的管理四实验结果和分析命令输入1.证书的显示—keytool-genkey -alias myca -keyalgRSA -keysize 1024 -keystore mystore -validity 4000(密钥的生成和存储)2.显示证书的详细信息keytool-list -v -keystore mystore3.将证书导出到证书文件,keytool -export -alias myca -keystore mycalib -file把证书库 mystore 中的别名为 mycaa 的证书导出到证书文件中,它包含证书主体的信息及证书的公钥,不包括私钥,可以公开。
分析1、|2、密钥表示Java用接口表示密钥。
Key接口由包的privateKey与 publicKey接口和巧pto包(属于JCE)中的SecretKey接口扩展。
privateKey与 publicKey表示公开密钥算法的的私有与公开密钥,SecretKey表示对称密钥。
每个Key对象与惟一算法相关联,用Key接口中的getAlgorithmO可以知道密钥对应的算法名。
3、密钥管理和数字证书密钥库(Key Store)是存放私有密钥.公开密钥与证书的容器。
Java平台自带有专属的安全密钥库,称为Java密钥库(JKS,Java Key Store)。
存放在密钥库中可能有两种项目:①密钥项目一一保存私有密钥/公开密钥对,公开密钥存放在格式的专用证书中。
②信任证书项目一一保存包含另一方公开密钥的证书。
》一个密钥库可以存放多个密钥项目和多个信任证书项目,密钥库中每个项目与唯一别名(alias)关联。
Java对密钥库和密钥项目提供用口令(加密)保护。
Java平台提供的keytool程序可以从命令行管理密钥库。
用以下命令可以生成银行和客户的私有密钥/公开密钥对:keytool -genkey -keystore<keystorefilename> -alidity 720<keystorefilename>表示密钥库文件名。
在执行命令时 keytool 会提示输入一些个人信息,用于生成专用证书的主题|(Subject),主题包含了一些证书持有人的信息。
本文提出的方案,客户证书用其中CN域保存支付帐号。
用keytool -export -keystore<keystorefilename> -file<cerfilename> -rfc,可以输出以<cerfile-name>为文件名的信任数字证书。
可以把信任证书发放给信息的接收方。
在应用程序中,使用类访问和管理密钥库,Keystore类可以读取密钥库中的密钥和证书信息。
Keystore类是个抽象类,由加密服务提供者(CsP)特定实现方法实现。
Keystore对象实例用静态方法getlnstance(string type)生成。
tyPe为密钥库类型,Java平台默认密钥库类型为JKS。
生成Keystore对象后,用load(Inputstreamstream,char[]password)从指定输入流装入Keystore 对象,口令Password用于验证密钥库数据完整性。
用getKey(Stringalias,charllpassword)返回别名为alias的密钥项目,password是密钥的解密口令。
用getCertificate(String alias) 返回别名为alias的证书项目,getCertificate返回一对象,Certificate对象用getpublicKeyo可以读出证书中的公开密钥。
五小结~数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet 上验证通信实体身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。
它是由一个由权威机构—— CA 机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。
数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。
最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。
数字证书还有一个重要的特征就是只在特定的时间段内有效。
实验二对称密码加密算法的实现一实验名称对称加密算法的实现二实验目的了解密码体制基本原理;【掌握运用 java 平台实现对称加密的相关的类和使用方法;三实验内容了解对称加密体制的基本原理;了解加密体制中密钥的随机生成的实现方法和重要性;了解DESEDE 算法,并运行此算法实现对字符串的加解密。
四实验结果和分析说明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 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 = args[0];<"Generating a TripleDES key...");;; import .*;/*****This class creates a TripleDES key, encrypts some text, * prints the ciphertext, then decrypts the text and * prints that.}**It requires a JCE-compliant TripleDES engine, like Cryptix' JCE.*/ public classduichenjiami{ public static void main(String[] args) throwsException{ if != 1) {"Usage: java duichenjiami text"); (1); }String text = args[0];。
"Generating a TripleDES key...");;; import .*; import .*;import public classE ncryptData{ 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 signature * in BASE64, and then verifies the signature with the corresponding * public key.*/ public classSignatureExample { publicstatic void main (String[]args) throws Exception {if != 1) {]"Usage: java SignatureExample \"I'm Sunxyang,and text to be signed\"");(1);}"Generating RSA key pair...");KeyPairGenerator kpg = ("RSA"); (1024);KeyPair keyPair = ();"Done generating key pair.");etBytes("UTF8");ncode(signatureBytes));We'll need to reinitialize This ());;} else {"\nSignature did not match.");}}}实验结果五小结数字签名是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。