对称加密和非对称加密区别
1. 对称加密
对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。
常见的对称加密算法:DES,AES,3DES等等。
2. 非对称加密
非对称加密指的是:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。
常见的非对称加密算法:RSA,ECC
3. 区别
对称加密算法相比非对称加密算法来说,加解密的效率要高得多。但是缺陷在于对于秘钥的管理上,以及在非安全信道中通讯时,密钥交换的安全性不能保障。所以在实际的网络环境中,会将两者混合使用.
例如针对C/S模型,
1. 服务端计算出一对秘钥pub/pri。将私钥保密,将公钥公开。
2. 客户端请求服务端时,拿到服务端的公钥pub。
3. 客户端通过AES计算出一个对称加密的秘钥X。 然后使用pub将X进行加密。
4. 客户端将加密后的密文发送给服务端。服务端通过pri解密获得X。
5. 然后两边的通讯内容就通过对称密钥X以对称加密算法来加解密。
1、安装JCE
默认情况下我们的JRE自带了JCE,但是默认是一个有限长度的版本,需要到oracle官网下载一个不限长度的JCE。
JCE下载地址
https://www.oracle.com/technetwork/java/javase/downloads/jce-all-download-5170447.html
2、安装JCE
下载JCE并解压(eg:jce_policy-8.zip),按照其中的README.txt的说明安装。
JCE的安装非常简单,其实就是将JDK/jre/lib/security目录中的两个jar文件(local_policy.jar、US_export_policy.jar)替换为压缩包中的jar文件。
3、使用jdk自带的keytool生成keystore文件并拷贝到resource文件夹
keytool -genkeypair -alias mydevkey -keyalg RSA -keystore d:/configserver.keystore
操作完毕,在d盘可以看到configserver.keystore文件。
4、在config server服务的bootstrap.yml文件中配置key-store
#博客:https://blog.csdn.net/u014296316/article/details/80881974
#http://localhost:6063/encrypt/status 验证加密解密功能是否正常
#http://localhost:6063/encrypt 只允许post请求
#http://localhost:6063/decrypt 只允许post请求
encrypt:
key-store:
location: configserver.keystore
alias: mydevkey
password: 123456
secret: 123456
5、访问 http://localhost:6063/encrypt/status 验证加密解密功能是否正常
6、访问/encrypt和/decrypt进行加密解密
http://localhost:6063/encrypt 只允许post请求
http://localhost:6063/decrypt 只允许post请求
7、配置文件中使用{cipher}开头标识加密数据
8、在Config Client服务获取加密数据
/**
* 这边的@RefreshScope注解不能少,否则即使调用/refresh,配置也不会刷新
*/
@RestController
@RefreshScope
public class ConfigClientController {
@Value("${env}")
private String env;
@Value("${password}")
private String password;
@Value("${username}")
private String username;
@GetMapping("/config/profile")
public String hello() {
return this.env+","+this.password+","+this.username;
}
}
http://localhost:6062/config/profile 查看效果