第十周学习总结
Posted qm20165239
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十周学习总结相关的知识,希望对你有一定的参考价值。
第十周学习总结
TCP编程以及UDP方式的网络编程
?在Java语言中,数据传输功能由Java IO实现,也就是说只需要从连接中获得输入流和输出流即可,然后将需要发送的数据写入连接对象的输出流中,在发送完成以后从输入流中读取数据即可。
OutputStream os = socket1.getOutputStream(); //获得输出流
InputStream is = socket1.getInputStream(); //获得输入流
?在Java API中,实现UDP方式的编程,包含客户端网络编程和服务器端网络编程,主要由DatagramSocket与DatagramPacket两个类实现。
Java 密码学算法
密码学基础
?我们遇到的安全问题可以归结为安全的三个属性(CIA金三角):机密性,完整性和可用性。
?密码学包含密码编码学( Cryptography) 和密码分析学(Cryptanalyst) 两个分支。 编码学与分析学相互促进, 又相互制约。 一方面, 两者在加强密码分析的安全上相互促进; 另一方面,两者在实施更为有效的攻击方面也相互影响。
?密码学常用术语有:明文、密文、加密、解密、放送者、接收者、加密算法、解密算法、加密秘钥、解密秘钥、被动攻击、主动攻击、密码协议等等。
?用保密通信模型来诠释密码学中信息传送方式,如下图:
?以下六种技术统称为密码学家的工具箱:对称密码、公钥密码、单向散列函数、消息认证码、数字签名以及伪随机数生成器。
Java与密码学
?Java安全体系结构总共分为4个部分:JCA( Java Cryptography Architecture, Java加密体系结构)、JCE( Java Cryptography Extension, Java加密扩展包)、JSSE( Java Secure Sockets Extension, Java安全套接字扩展包)、JAAS( Java Authentication and Authentication Service, Java鉴别与安全服务)。
?JCA和JCE是Java平台提供的用于安全和加密服务的两组API。它们并不执行任何算法,它们只是连接应用和实际算法实现程序的一组接口。 软件开发商可以根据JCE接口( 又称安全提供者接口) 将各种算法实现后,打包成一个Provider( 安全提供者) , 动态地加载到Java运行环境中。
Java对称加密-DES算法
?将密钥通过对象序列化方式保存在文件中,编程思路:(1) 获取密钥生成器,(2) 初始化密钥生成器,(3) 生成密钥,(4) 通过对象序列化方式将密钥保存在文件中。
?将密钥通过字节保存在文件中,编程思路:Java中所有的密钥类都有一个getEncoded( )方法,通过它可以从密钥对象中获取主要编码格式,其返回值是字节数组。其主要步骤为:(1) 获取密钥、(2)获取主要编码格式、(3) 保存密钥编码格式
Java非对称加密-RSA算法
Java的KeyPairGenerator类提供了一些方法来创建密钥对以便用于非对称加密,密钥对创建好后封装在KeyPair类型的对象中,在KeyPair类中提供了获取公钥和私钥的方法。具体步骤如下:
(1) 创建密钥对生成器,(2) 初始化密钥生成器,(3) 生成密钥对,(4) 获取公钥和私钥。
使用密钥协定创建共享密钥
?非对称加密解决了密钥分发的难题,但其计算量比对称密钥大,因此一般并不使用非对称加密加密大量数据。常见的做法是:主要数据通过对称密钥加密,而使用非对称加密来分发对称密钥,这样就将两者的优势结合了起来。
?除了这种方式以外,还可以使用密钥协定来交换对称密钥。执行密钥协定的标准算法是DH算法。1.创建DH公钥和私钥,2.创建共享密钥。
Java摘要算法- MD5
?使用Java计算指定字符串的消息摘要。
java.security包中的MessageDigest类提供了计算消息摘要的方法。
(1) 生成MessageDigest对象
MessageDigest m=MessageDigest.getInstance("MD5");
(2) 传入需要计算的字符串
m.update(x.getBytes("UTF8" ));
(3) 计算消息摘要
byte s[ ]=m.digest( );
(4) 处理计算结果。
网络
?网络可以分为:局域网和广域网。
?计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层面向用户。
HTTP协议
?超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。
?一次HTTP请求包含:方法、请求头、请求实体。
java.net.URL以及java.net.URLConnection
?URL:统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
?java.net.HttpURLConnection类是另外一种访问HTTP资源的方式.HttpURLConnection类具有完全的访问能力,可以取代HttpGet和HttpPost类.使用HttpUrlConnection访问HTTP资源可以使用如下六步:
(1)使用java.net.URL封装HTTP资源的url,并使用openConnection方法获得HttpUrlConnection对象
(2)设置请求方法,例如GET,POST等
(3)设置输入输出及其他权限.如果要下载HTTP资源或向服务端上传数据,需要使用如下代码进行设置.
下载HTTP资源,需要将setDoInput方法的参数值设为true
(4)设置http请求头.在很多情况下,要根据实际情况设置一些HTTP请求头,例如下面的代码设置了Charset请求头的值为UTF-8.
(5)输入和输出数据.这一步是对HTTP资源的读写操作.也就是通过InputStream和OutputStream读取和写入数据.下面的代码获得了InputStream对象和OutputStream对象.
(6)关闭输入和输出流.虽然关闭输入输出流并不是必需的,在应用程序结束后,输入输出流会自动关闭,但显示关闭输入输出流是一个好习惯.
以上是关于第十周学习总结的主要内容,如果未能解决你的问题,请参考以下文章
## 20155336 2016-2017-2《JAVA程序设计》第十周学习总结