加密方式
1. 对称加密
对称加密密钥是相同的。
1.1常见对称加密算法:
算法 | 描述 |
---|
DES(Data Encryption Standard) | 数据加密标准,速度较快,适用于加密大量数据 | 3DES(Triple DES) | 基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 | AES(Advanced Encryption Standard) | 高级加密标准,速度快,安全级别高 | Blowfish | 速度快,且安全,没有商业限制 |
2. 非对称加密
非对称加密有公钥和私钥。 特点:
- 算法需要两个密钥,一个公开,公开的密钥无法推导出对应的私钥。
- 算法复杂度相对对称加密算法高,所以计算相对慢。
- 密钥的保密性好,公钥可以公开,免去交换密钥的需求。
使用场景
- 数据加密传输
- 报文签名校验
常见非对称加密算法
RSA
数字证书
由权威部门颁发的成为证书。证书有公钥,还有证书的所有者,还有发布机构和证书有效期,可以类似身份证。这个证书是怎么生成的?生成证书需要发起一个请求,然后将这个请求发给一个权威机构去认证,这个机构称为CA(Certificate Authority)。 证书请求可以通过该命令生成: openssl req -key test.key -new -out test.req 将这个请求发给权威机构,权威机构会给这个证书一个章,成为签名算法。如何保证签名是真的权威机构签名的呢?用权威机构CA的私钥就可以保证了。 权威机构给证书的签名的命令是这样的: openssl x509 -req in test.req -CA cert.pem -CAkey private.key -out test.pem 这个命令会返回Signature ok,而test.pem就是签过名的证书。 查看证书内容的命令: openssl x509 -in test.pem -noout -text 想要验证证书,需要CA的公钥,问题来了,怎么确定CA的公钥是否可靠?CA的公钥需要有上级给他背书,证书体系中就是Root CA。还有一种证书就是自签名证书,自己给自己签名。
密钥
公钥加密、私钥解密。 私钥签名、公钥验证。
密钥文件是用于存放私钥和公钥的文件,可以把私钥和公钥放在一起,也可以分开放。而密钥文件有很多格式。jks、p12、pem、cert ,要根据不同的服务端和客户端选取。 一个密钥文件可以存放多个公钥和私钥。
生成cert文件的两种方式: 第一种:自己生成密钥和CSR(Certificate Signing Request)证书请求文件,把CSR给CA机构,机构生成一个cert文件给你,然后要把该cert文件导入到自己的密钥文件里。
第二种:直接在CA生成所有,然后回给private key和cert文件,配置到服务端即可。
密钥格式: Private Key:
-----BEGIN ENCRYPTED PRIVATE KEY-----
XXXX
-----END ENCRYPTED PRIVATE KEY-----
CSR文件
-----BEGIN CERTIFICATE REQUEST-----
XXX
-----END CERTIFICATE REQUEST -----
Public key文件
----- BEGIN PUBLIC KEY-----
XXX
----- END PUBLIC KEY-----
Cert文件
----- BEGIN CERTIFICATE -----
XXX
----END CERTIFICATE -----
密钥工具
keytool,openssl。
keytool是JDK提供的工具。
常见证书类型
-
带有私钥的证书 由PublicKey Cryptography Standards #12,即PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以 pfx 作为证书文件后缀名 -
二进制编码的证书 二进制编码的证书:由X.509公钥证书格式标准定义,证书中没有私钥,包含DER编码二进制格式的公钥,以 cer 作为证书文件后缀名。 -
Base64编码的证书 Base64编码的证书:由X.509公钥证书格式标准定义,证书中没有私钥,包含BASE64编码格式的公钥,也是以 cer 作为证书文件后缀名。
HTTPS的工作模式
非对称加密在性能上不如堆成加密。 HTTPS用
链接
- https://juejin.cn/post/6844904141987282952
- https://juejin.cn/post/6844903545272041479
- https://juejin.cn/post/6882404615443185678
- https://juejin.cn/post/7099723298031796254
- https://juejin.cn/post/6844904072856731662
|