ComSec概念概述

ComSec总结

这学期选修了bintou老师的ComSec计算机安全课,上课期间觉得自己学的马马虎虎的,学习了一些计算机安全中的密码学算法和安全概念,但对这些概念都不是特别清晰,期末复习的过程中,对其中的一些算法和概念更理解了一些,趁着刚考完还没忘记,总结一波挂在博客,不当之处,欢迎指正。

公钥密码学概述

公钥密码学也称为非对称密码学,与传统的对称密码学区别在于,加密和解密使用不同的密钥,也就是所说的key,其中公开出来的密钥是公钥,另一个是私钥,由持有者严格保密。且公钥密码是基于数学函数而不是基于替换和置换。

公钥密码学提出的解决的基本问题包括有

  1. 密钥交换
  2. 数字签名

公钥密码的六个组成成分分别是明文密文公钥私钥加密算法解密算法

阅读更多
SpringMVC 前端数据传一个对象的值

这两天在写SpringMVC,从前端传入一个对象的各个属性的值时,后端对象没有接收到值,debug了很久。

首先写了一个实体类User

如下:

1
2
3
4
5
6
7
8
package com.luo.pojo;

public class User {
public String name;
public int age;
public int id;
}

然后是一个简单的控制器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.luo.controller;

import com.luo.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloController {

@RequestMapping("/user")
public String hello(User user){
System.out.println(user.toString());
System.out.println(user.age);
System.out.println(user.id);
System.out.println(user.name);
return "hello";
}
}

利用Tomcat部署后,在本地请求http://localhost:8080/luo/user?age=15&name=luo&id=10

后端获取的结果为:

age=0
id=0
name=Null

debug了一晚上,结果发现是自己看教程的时候太粗心了居然没有写set方法,果然写了set方法后成功解决,获取到了对应的值。

因此猜想从前端传值的注入方式是set方法注入,又想起Spring Bean对象注入的方式有set方法注入构造器方式注入,好奇心所以想试一下能否通过构造函数注入,于是在User类中添加了全参构造函数

阅读更多
JAVA动态代理

代理

最近在看JAVA动态代理的东西,写了这篇文章记录一下自己的理解,不当之处,欢迎指正!

1 现实中的代理

代理,在我们平时的生活中就有很多的体现,在我们的平时生活中,经常会听到中介这个词,中介就是一种代理。

房屋中介代理房东的职责,负责向租户看房子,签合同,收房租等等,房东在有代理的情况下,所需要的任务就比较简单了:提供房子,收取利润。

再如留学中介也是一种代理,留学中介帮助国际学校,面向全世界招生,帮助学校招生,同时帮忙留学生了解学校。

我理解的代理特点是:

  1. 代理和代理目标要做的事情是一致的:如留学中介(代理)和学校(代理目标)要做的事情都是:招生
  2. 但代理和代理目标要做的事情又并非完全一样的,代理常常需要做一些额外的事情:譬如房屋中介和房东虽然要做的最主要的事情是出租房子,但是房屋中介还要做一些额外的事情:带租户看房子,聊价格,签合同,甚至有时候收房租也是由中介收取的。

代理模式:在开发中,在某种情况下,在一个对象(A)不适合或不能直接访问另一个对象©时,我们需要在这两个对象直接找到一个代理(B),这就是代理模式。

阅读更多
数据结构-符号表

1 前言

最近在学习《算法4》第三章查找,里面讲述了现代应用常用的一种抽象结构符号表以及符号表的几种实现,本文仅是自己学习的记录,如有不当,欢迎指正。

现代计算机和网络使得我们能够访问海量的信息。高效检索这些信息的能力是处理它们的重要前提。

我们使用符号表这个词来描述一张抽象的表格,我们会将信息(也称之为值)存储在其中,然后按照指定的来搜索并获取这些信息。键和值的具体意义取决于不同的应用。

符号表有时也被称为字典,例如在英语字典中,键就是单词,值就是单词所对应的定义和注解

符号表有时又叫做索引,在一本书中,键是术语,而值是对应的页面

本章说明了基本的API和两种重要实现后,会学习三种经典的数据类型实现高效的符号表:二叉查找树,红黑树和散列表。

阅读更多
ComSec作业11

ComSec作业十一:数字签名

13.2 数字签名应该具有哪些性质?

数字签名一般旨在解决两种情形的问题,一是接收方伪造消息并声称该消息是来自发送方的,二是发送方拒绝承认已发送过的消息,在收发双方不能完全信任的情况下,就需要数字签名来解决这个问题。

数字签名有下列特征:

  • 它必须能验证签名者,签名日期和时间。
  • 它必须能认证被签的消息内容。
  • 签名应由第三方仲裁,以解决争执。
  • 数字签名具有认证功能。
阅读更多
串行,并发与并行

串行,并发与并行

最近看到一个问题 串行,并发与并行的区别,查阅了一些网上的资料和视频,谈谈自己的理解,不当之处,欢迎指正!

首先看两句话:

  • Concurrency is not Parallelism. 并发不是并行
  • Concurrency enables parallelism & makes parallelism(and scaling and everything) easy. 并发允许去并行,并发让并行更容易
阅读更多
Spring Autowired的一个小问题

最近学习Spring框架:在我自己写代码的过程中,发现,如果@Autowired注解用在属性上的话,最好要将该属性setter的方法去掉,起初的原因是我想测试一下当有两个Bean的类型(Type)一致是,需要让@Autowired配合使用@Qualifier才能找到唯一的bean。首先看一下我的xml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">

<bean id="cat222" class="com.luo.pojo.Cat">
<property name="catName" value="hao"/>
</bean>

<bean id="dog111" class="com.luo.pojo.Dog">
<property name="dogName" value="yue1"/>
</bean>

<bean id="dog" class="com.luo.pojo.Dog"> <!-- 重点看这里,有两个Dog类型的bean -->
<property name="dogName" value="yue"/>
</bean>


<bean id="people" class="com.luo.pojo.People" autowire="byType">
<property name="name" value="luo"/>
</bean>

<context:annotation-config/>

</beans>

然后我利用@Autowired 配合 @Qualifier 对dog进行自动装配:

阅读更多
DNS基本工作原理

1 需要DNS 提供服务

我们知道,在计算机网络中,因为主机之间是需要通信的,所以很重要的一件事是找到一种方式去唯一性地识别一台主机,所以就有了主机MAC地址和IP地址,MAC地址又称为物理地址,计算机对于MAC地址和IP地址当然是乐于接受的,因为它们无非就是一串数字嘛,通过转换成01比特流能很好的在计算机之间传递这种MAC地址信息和IP地址信息。但计算机终究是给人用的,特别是对计算机不熟悉的普通大众来说,人们是记不住那么多的IP地址的,所以就出现了另一种主机名,如www.example1.com,就是大家平时所说的网址嘛,访问一个网站 www.example1.com,其实就是访问一台主机名为 www.example1.com 的服务器,这种识别主机的方式更容易被人们所接受。

尽管人们喜欢这种便于记忆的主机名标识方式,但是我们知道在计算机网络中,数据的传递还是要通过定长的,有着层次结构的IP地址,为了解决这两种不同的需求,我们就需要一种能进行主机名到IP地址转换的服务,这就需要**域名系统DNS(Domain Name System)**提供服务。

阅读更多
传统加密技术

CANS3-CLASSICAL ENCRYPTION TECHNIQUES(传统加密技术)

1 SYMMETRIC CIPHER MODEL

1.1 五个基本成分

对于一个对称加密的过程,有五个基本成分:

  • 明文 Plaintext 原始的可理解的消息或数据,是加密算法的输入
  • 加密算法 Encryption algorithm 加密算法是对明文进行各种代替(substitutions)置换(transformation),以产生不可理解的密文
  • 密钥 Secret key 密钥也是加密算法的输入,独立于明文和算法,算法根据所用的特定密钥而产生不同的输出,算法所进行的各种代替和置换也依靠密钥。
  • 密文 Ciphertext 密文是加密算法的输出,直观看起来不可理解其代表的意识,依赖于明文密钥,对于给定的相同的明文,不同的密钥将产生不同的密文。
  • 解密算法 Decryption algorithm 本质上是加密算法的逆运算,输入为密文和密钥,输出原始明文

而对称密码对称的意思就是加密使用的密钥和解密使用的密钥是相同的

阅读更多
CIA and OSI SECURITY ARCHITECTURE

写这篇文章的原因:考完试后经过半个月的补觉和躺平,本菜狗终于想起来要学习了(不是),《密码编码学与网络安全》简称CANS之前其实看过一二章,然后再次看的时候,完全不记得以前看过了(淦),算了算了重新开始看吧,写博客单纯记录自己学习的过程和尽量避免学完就忘(dalao们不要见笑,原谅我这个菜狗的水平hh),如有错误,敬请指出!!!

阅读更多