加密方式

对称加密

在对称加密算法中,加密、解密时需要的密钥是相同的,也就是说,使用“小鸡炖蘑菇”这句话既可以对信息加密,也可以用来解密加密后的字符串,因此在使用对称加密是,密钥一定不能被人知晓,对称加密不具备前向安全性;当然因为加解密逻辑简单,所以对称加密性能高速度快。

[root@JumpServer ~]# openssl speed aes
Doing aes-128 cbc for 3s on 16 size blocks: 19905551 aes-128 cbc's in 2.96s
Doing aes-128 cbc for 3s on 64 size blocks: 5527716 aes-128 cbc's in 2.97s
Doing aes-128 cbc for 3s on 256 size blocks: 1403847 aes-128 cbc's in 2.95s
Doing aes-128 cbc for 3s on 1024 size blocks: 356786 aes-128 cbc's in 2.97s
Doing aes-128 cbc for 3s on 8192 size blocks: 44622 aes-128 cbc's in 2.97s
Doing aes-192 cbc for 3s on 16 size blocks: 16907744 aes-192 cbc's in 2.97s
Doing aes-192 cbc for 3s on 64 size blocks: 4576864 aes-192 cbc's in 2.95s
Doing aes-192 cbc for 3s on 256 size blocks: 1175446 aes-192 cbc's in 2.97s
Doing aes-192 cbc for 3s on 1024 size blocks: 295352 aes-192 cbc's in 2.97s
Doing aes-192 cbc for 3s on 8192 size blocks: 36745 aes-192 cbc's in 2.95s
Doing aes-256 cbc for 3s on 16 size blocks: 14730699 aes-256 cbc's in 2.98s
Doing aes-256 cbc for 3s on 64 size blocks: 3957665 aes-256 cbc's in 2.97s
Doing aes-256 cbc for 3s on 256 size blocks: 998590 aes-256 cbc's in 2.95s
Doing aes-256 cbc for 3s on 1024 size blocks: 253385 aes-256 cbc's in 2.97s
Doing aes-256 cbc for 3s on 8192 size blocks: 31612 aes-256 cbc's in 2.96s
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc     107597.57k   119115.77k   121825.37k   123013.09k   123078.59k
aes-192 cbc      91085.49k    99294.68k   101317.90k   101831.80k   102039.00k
aes-256 cbc      79091.00k    85283.02k    86657.30k    87362.37k    87488.35k

非对称加密

在非对称加密中,加密和解密的密钥是不同的,公钥加密的内容只有私钥才能解开,私钥加密的内容只有公钥才能解开。原理是大数求对数难度相当高,因为非对称加密比较复杂,性能远低于对称加密。

[root@JumpServer ~]# openssl speed rsa
Doing 512 bit private rsa's for 10s: 176715 512 bit private RSA's in 9.83s
Doing 512 bit public rsa's for 10s: 3049621 512 bit public RSA's in 9.86s
Doing 1024 bit private rsa's for 10s: 80712 1024 bit private RSA's in 9.87s
Doing 1024 bit public rsa's for 10s: 1299532 1024 bit public RSA's in 9.87s
Doing 2048 bit private rsa's for 10s: 11920 2048 bit private RSA's in 9.74s
Doing 2048 bit public rsa's for 10s: 433963 2048 bit public RSA's in 9.87s
Doing 4096 bit private rsa's for 10s: 1890 4096 bit private RSA's in 9.84s
Doing 4096 bit public rsa's for 10s: 124375 4096 bit public RSA's in 9.85s
                  sign    verify    sign/s verify/s
rsa  512 bits 0.000056s 0.000003s  17977.1 309292.2
rsa 1024 bits 0.000122s 0.000008s   8177.5 131664.8
rsa 2048 bits 0.000817s 0.000023s   1223.8  43967.9
rsa 4096 bits 0.005206s 0.000079s    192.1  12626.9

综上,https握手交互密钥阶段会使用非对称加密,而传输数据时使用对称加解密。