OC面试题 十、网络

280 阅读6分钟

HTTPS和HTTP的区别?

httphttps
传输方式明文传输SSL+HTTP
加密
安全性
证书免费需要到CA申请
响应速度
握手TCP 3次TCP 3次 + SSL 9次
连接简单无状态基于协议有状态
端口80443
资源占用

几种常见的数据加密方式?

一、MD5

MD5: 全称是Message Digest Algorithm 5,译为“消息摘要算法第5版”,MD5编码是最常用的编码方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码(MD5破解网站:www.cmd5.com)。

MD5主要特点是不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是绝对的,但基本是不能一样的)。

MD5算法还具有以下性质:

  1. 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
  2. 容易计算:从原数据计算出MD5值很容易。
  3. 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  4. 弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
  5. 强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。
  6. MD5改进:现在的MD5已不再是绝对安全,对此,可以对MD5稍作改进,以增加解密的难度。

加盐(Salt): 在明文的固定位置插入随机串,然后再进行MD5

先加密,后乱序:先对明文进行MD5,然后对加密得到的MD5串的字符进行乱序。

总之宗旨就是:黑客就算攻破了数据库,也无法解密出正确的明文。

二、RSA加密

RSA非对称加密算法

非对称加密算法需要两个密钥:公开密钥(publickey)私有密钥(PRivatekey)。 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

特点:

非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥,但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。

对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。

基本加密原理:

(1) 找出两个“很大”的质数:P & Q

(2) N = P * Q

(3) M = (P - 1) * (Q - 1)

(4) 找出整数E,E与M互质,即除了1之外,没有其他公约数

(5) 找出整数D,使得E * D除以M余1,即(E * D) % M = 1

经过上述准备工作之后,可以得到:

E是公钥,负责加密

D是私钥,负责解密

N负责公钥和私钥之间的联系

加密算法,假定对X进行加密

(X ^ E) % N = Y

n根据费尔马小定义,根据以下公式可以完成解密操作

(Y ^ D) % N = X

但是RSA加密算法效率较差,对大型数据加密时间很长,一般用于小数据。

常用场景:

分部要给总部发一段报文,先对报文整个进行MD5得到一个报文摘要,再对这个报文摘要用公钥加密。然后把报文和这个RSA密文一起发过去。

总部接收到报文之后要先确定报文是否在中途被人篡改,就先把这个密文用私钥解密得到报文摘要,再和整个报文MD5一下得到的报文摘要进行对比,如果一样就是没被改过。

三、对称加密算法

优点:算法公开、计算量小、加密速度快、加密效率高、可逆

缺点:双方使用相同钥匙,安全性得不到保证

现状:对称加密的速度比公钥加密快很多,在很多场合都需要对称加密,相较于DES和3DES算法而言,AES算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密标准。

nECB:电子代码本,就是说每个块都是独立加密的

nCBC:密码块链,使用一个密钥和一个初始化向量(IV)对数据执行加密转换

ECB和CBC区别:CBC更加复杂更加安全,里面加入了8位的向量(8个o的话结果等于ECB)。在明文里面改一个字母,ECB密文对应的那一行会改变,CBC密文从那一行往后都会改变。

ECB终端命令:

$ openssl enc -des-ecb -K 616263 -nosalt -in msg1.txt -out msg1.bin

CBC终端命令:

$ openssl enc -des-cbc -K 616263 -iv 0000000000000000 -nosalt -in msg1.txt -out msg2.bin

TCP/UDP

TCP和UDP的区别

TCPUDP
是否连接面向连接面向非连接
传输可靠性可靠不可靠
应用场合少量数据传输大量数据
速度

TCP连接的三次握手

  • 第一次握手:客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状态,等待服务器确认;客户端->服务器 发送SYN报文

  • 第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;服务器->客户端 发送 SYN + ACK报文

  • 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手。客户端->服务器 发送ACK报文

HTTP请求方式

HTTP超文本传输协议:是 短连接,是客户端主动发送请求,服务器作出响应,响应之后服务器断开。HTTP属于 应用层面向对象协议,HTTP有两类报文:请求报文和响应报文

请求报文包含:请求行、请求头、空行、请求数据 四部分组成。

响应报文包含:状态行、消息报文、响应正文 三部分组成。

通常,HTTP请求方式有三种,分别是:POST、GET、HEAD。其中POST和GET用于数据发送。

1、POST:它将发送的数据单独放在一个 中进行发送,而不是附加到URL地址后面,这样做的好处是这些 数据不会出现在URL地址 中。

2、GET:它将发送的数据直接添加到URL后面,用 &链接,这样的好处是不用另外的数据流来发送这些数据,但是 缺点是将用户信息暴露出来了,不安全

3、HEAD:它是 请求资源的元数据方法

POST和GET的区别?

区别GETPOST
用途从服务器上获取数据向服务器提交数据
数据大小最大1.24字节无限制
安全性URL中能看到提交的数据隐藏在请求体中