20155231 2016-2017-2 《Java程序设计》第10周学习总结

教材学习内容总结

学习目标

  • 了解计算机网络基础
  • 掌握Java Socket编程
  • 理解混合密码系统
  • 掌握Java 密码技术相关API的使用

Java 密码学算法

  • 我们遇到的安全问题可以归结为安全的三个属性(CIA金三角):
  1. 机密性(Confidentiality):确保数据仅能被合法的用户访问, 即数据不能被未授权的第三方使用。
  2. 完整性(Integrity):主要确保数据只能由授权方或以授权的方式进行修改,即数据在传输过程中不能被未授权方修改。
  3. 可用性(Availability):主要确保所有数据仅在适当的时候可以由授权方访问。
  • 其他安全技术目标:
  1. 可靠性: 主要确保系统能在规定条件下、 规定时间内、 完成规定功能时具有稳定的概率。
  2. 抗否认性: 又称抗抵赖性, 主要确保发送方与接收方在执行各自操作后, 对所做的操作不可否认。
  3. 可控性: 主要是对信息及信息系统实施安全监控。
  4. 可审查性: 主要是通过审计、 监控、 抗否认性等安全机制, 确保数据访问者( 包括合法用户、 攻击者、
  5. 破坏者、 抵赖者) 的行为有证可查, 当网络出现安全问题时, 提供调查依据和手段。
  6. 认证( 鉴别) : 主要确保数据访问者和信息服务者的身份真实有效。
  7. 访问控制: 主要确保数据不被非授权方或以未授权方式使用。

Java安全体系结构总共分为4个部分:

  • JCA( Java Cryptography Architecture, Java加密体系结构):JCA提供基本的加密框架, 如证书、 数字签名、消息摘要和密钥对产生器。

  • JCE( Java Cryptography Extension, Java加密扩展包):JCE在JCA的基础上作了扩展, 提供了各种加密算法、 消息摘要算法和密钥管理等功能。JCE的实现主要在javax.crypto包( 及其子包) 中

  • JSSE( Java Secure Sockets Extension, Java安全套接字扩展包):JSSE提供了基于SSL( Secure Sockets Layer,安全套接字层) 的加密功能。 在网络的传输过程中, 信息会经过多个主机(很有可能其中一台就被窃听) , 最终传送给接收者, 这是不安全的。这种确保网络通信安全的服务就是由JSSE来提供的。

  • JAAS( Java Authentication and Authentication Service, Java鉴别与安全服务):JAAS提供了在Java平台上进行用户身份鉴别的功能。

  • 凯撒密码

  • Java对称加密-DES算法

  • Java非对称加密-RSA算法

  • 使用密钥协定创建共享密钥

  • Java摘要算法- MD5

  • Java混合密码系统

网络

  1. 网络编程步骤
  • 客户端网络编程步骤

    (1) 建立网络连接

    (2) 交换数据

    (3) 关闭网络连接
  • 服务器端网络编程步骤

    (1) 监听端口

    (2) 获得连接

    (3) 交换数据

    (4) 关闭连接
  1. Java网络编程技术
  • 网络编程的基础:和网络编程有关的基本API位于java.net包中,该包中包含了基本的网络编程实现。
  • InetAddress类:基础的网络类,代表一个IP地址,并且将IP地址和域名相关的操作方法包含在该类的内部。

    (1)使用域名创建对象:

    InetAddress inet1 = InetAddress.getByName("www.163.com");

    (2)使用IP创建对象

    InetAddress inet2 = InetAddress.getByName("127.0.0.1");

    (3)获得本机地址对象

    InetAddress inet3 = InetAddress.getLocalHost();

    (4)获得对象中存储的域名

    String host = inet3.getHostName();

    (5)获得对象中存储的IP

    String ip = inet3.getHostAddress();
  1. TCP编程
  • TCP方式的网络编程:在实际实现时,以java.net.Socket类代表客户端连接,以java.net.ServerSocket类代表服务器端连接。
  • 实现步骤:

    (1)建立客户端网络连接,也就是创建Socket类型的对象

    Socket socket1 = new Socket(“192.168.1.103”,10000);

    (2)按照“请求-响应”模型进行网络数据交换

    OutputStream os = socket1.getOutputStream(); //获得输出流

    InputStream is = socket1.getInputStream(); //获得输入流

    (3)关闭网络连接:

    socket1.close();
  • 实现服务器端监听的代码为:

    ServerSocket ss = new ServerSocket(端口号);
  • 实现获得连接的代码是:

    Socket socket = ss.accept();
  • 关闭服务器端连接:

    ss.close();
  • 服务器端是对话一次数据以后就关闭了连接,如果服务器端程序关闭了,客户端继续发送数据肯定会出现异常。
  1. 网络协议
  • 两个网络协议格式:客户端发送数据格式和服务器端反馈数据格式。
  • 客户端程序需要完成的处理为:

    (1)客户端发送协议格式的生成

    (2)服务器端反馈数据格式的解析

    服务器端程序需要完成的处理为:

    (1)服务器端反馈协议格式的生成

    (2)客户端发送协议格式的解析

教材学习中的问题和解决过程

  • 问题1:UDP编程与TCP编程的区别及优缺点
  • 问题1解决方案:udp协议于tcp协议最本质的区别是:udp不基于连接,tcp基于连接;简单的说就是通信双方是否在自己的机器上保持对方身份的记录,tcp保持,udp不保持。

    udp适合传输数据内容不太敏感,丢失、误传影响不大的工作,例如局域网聊天、设备发现;tcp范围就太广了,凡是应用规模大点、网络环境恶劣点的应用都需要,例如ftp、网管、下载软件等。

    另外在网络环境相同的情况下,使用默认的tcp和udp协议时,网络好udp的效率高一些,而网络不好tcp的稳定性高一些。

代码调试中的问题和解决过程

  • 问题1:使用KeyPair类的getPublic( )和getPrivate( )方法获得公钥和私钥对象
  • 问题1解决方案:
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*; public class Skey_RSA{
public static void main(String args[]) throws Exception{
KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp=kpg.genKeyPair();
PublicKey pbkey=kp.getPublic();
PrivateKey prkey=kp.getPrivate();
// 保存公钥
FileOutputStream f1=new FileOutputStream("Skey_RSA_pub.dat");
ObjectOutputStream b1=new ObjectOutputStream(f1);
b1.writeObject(pbkey);
// 保存私钥
FileOutputStream f2=new FileOutputStream("Skey_RSA_priv.dat");
ObjectOutputStream b2=new ObjectOutputStream(f2);
b2.writeObject(prkey);
}
}

代码托管

本周:

总量:

上周考试错题总结

    1. 简答(5)你是如何运行P509 ConnectionDemo.java和P513 MessageDAODemo.java的?

下载安装MySQL(或XAMPP),IDE(Eclipse/IDEA/Netbeans)中导入数据库驱动 (1分)

建数据库demo : create schema demo (1 分)

修改P509 ConnectionDemo.java中passwd 改为自己的,openhome的一般不对(1分)

建表:

Use demo;

create TABLE t_message …. (1分)

修改P509 ConnectionDemo.java中MessageDAO dao = new MessageDAO()中的口令 改为自己的,openhome的一般不对(1分)

结对及互评

评分标准

  1. 正确使用Markdown语法(加1分):

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分

  4. 代码调试中的问题和解决过程, 一个问题加1分

  5. 本周有效代码超过300分行的(加2分)

    • 一周提交次数少于20次的不加分
  6. 其他加分:

    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习情况真实可信的加1分
  7. 扣分:

    • 有抄袭的扣至0分
    • 代码作弊的扣至0分
    • 迟交作业的扣至0分

点评模板:

  • 博客中值得学习的或问题:

    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:

    • xxx
    • xxx
    • ...
  • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

  • 参考示例

点评过的同学博客和代码

其他(感悟、思考等,可选)

本周学习和其他科学习内容有所相通,但是,真的难。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第10周 355/4288 1/12 14/1000

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:20小时

  • 实际学习时间:14小时

  • 改进情况:多多自我实践

(有空多看看现代软件工程 课件

软件工程师能力自我评价表
)

参考资料

20155231 2016-2017-2 《Java程序设计》第10周学习总结的更多相关文章

  1. 2018面向对象程序设计(Java)第10周学习指导及要求

    2018面向对象程序设计(Java)第10周学习指导及要求(2018.11.1-2018.11.4)  学习目标 理解泛型概念: 掌握泛型类的定义与使用: 掌握泛型方法的声明与使用: 掌握泛型接口的定 ...

  2. 面向对象程序设计(JAVA) 第10周学习指导及要求

    2019面向对象程序设计(Java)第10周学习指导及要求 (2019.11.1-2019.11.4)   学习目标 1.掌握java异常处理技术: 2.了解断言的用法: 3.了解日志的用途: 4.掌 ...

  3. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  4. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  5. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  6. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  7. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  8. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  9. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

  10. 20155304田宜楠 2006-2007-2 《Java程序设计》第二周学习总结

    20155304田宜楠 2006-2007-2 <Java程序设计>第二周学习总结 教材学习内容总结 一.类型与变量 1.类型 整数: 可细分为为short整数(占2字节),int整数(占 ...

随机推荐

  1. Monster: half man, half beast and very scary.

    Monster: half man, half beast and very scary. 怪物,半人半兽很吓人.

  2. background-size之CSS Sprite巧用

    前言 background-size:规定背景图片的尺寸.为CSS3属性.so...万恶的ie浏览器,此刻的内心一定是崩溃的!说实话,作为一个前端的coder,面对CSS3如此多的炫酷效果,我不能用起 ...

  3. SVG中的元素属性

    SVG attributes by category Animation event attributes onbegin, onend, onload, onrepeat Animation att ...

  4. Phonegap 目录结构介绍

    1.Src 该目录包含了所有用户要创建的 Java 源文件 2.gen 为开发工具自动创建 3.assets 目录 用于方一些资源文件 css js html 4.res 目录该目录包含了所有的资源文 ...

  5. C++ 异常处理机制的实现

    http://blog.jobbole.com/103925/ 本文深入讨论了VC++编译器异常处理的实现机制.附件源代码包含了一个VC++的异常处理库. 下载源代码 – 19 Kb 介绍 相对于传统 ...

  6. redis.conf 具体配置详解

    redis.conf 具体配置详解 # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => ...

  7. 26、springboot与消息

    概述: 1.大多应用中,可通过消息服务中间件来提升系统异步通信.扩展解耦能力消息服务中两个重要概念:           2.消息代理(message broker)和目的地(destination) ...

  8. 安装IIS步骤图解

    这几日好些网友来找iis安装包,但是因为新浪爱问的共享资料已关闭导致下载链接不可用,笔者在新浪微盘的备份资料只有5.1版,现共享链接如下: IIS5.1 for windows xp下载链接http: ...

  9. python -- MySQLdb连接mysql数据库

    1. python安装mysql $ pip install mysql-python 2. 数据库连接程序: import MySQLdb # 打开数据库连接db = MySQLdb.connect ...

  10. UVA - 11987 Almost Union-Find(带删除的并查集)

    I hope you know the beautiful Union-Find structure. In this problem, you’re to implement something s ...