HTTPS和HTTP的区别?
http | https | |
---|---|---|
传输方式 | 明文传输 | SSL+HTTP |
加密 | 否 | 是 |
安全性 | 差 | 好 |
证书 | 免费 | 需要到CA申请 |
响应速度 | 快 | 慢 |
握手 | TCP 3次 | TCP 3次 + SSL 9次 |
连接 | 简单无状态 | 基于协议有状态 |
端口 | 80 | 443 |
资源占用 | 少 | 多 |
几种常见的数据加密方式?
一、MD5
MD5: 全称是
Message Digest Algorithm 5
,译为“消息摘要算法第5版”,MD5编码是最常用的编码方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码
(MD5破解网站:www.cmd5.com)。MD5主要特点是
不可逆
,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是绝对的,但基本是不能一样的)。MD5算法还具有以下性质:
- 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
- 容易计算:从原数据计算出MD5值很容易。
- 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
- 弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
- 强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。
- 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的区别
TCP | UDP | |
---|---|---|
是否连接 | 面向连接 | 面向非连接 |
传输可靠性 | 可靠 | 不可靠 |
应用场合 | 少量数据 | 传输大量数据 |
速度 | 慢 | 快 |
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的区别?
区别 | GET | POST |
---|---|---|
用途 | 从服务器上获取数据 | 向服务器提交数据 |
数据大小 | 最大1.24字节 | 无限制 |
安全性 | URL中能看到提交的数据 | 隐藏在请求体中 |