数据加密
场景:我们客户端请求服务端时数据正常都是明文传输,这样的话容易出现数据安全漏洞
例子:登录注册时传输的密码,还是用户个人敏感信息,都是明文传输的话就太不安全了
解决:所以我们在客户端传输的时候,用非对称加密算法RSA进行加密保护数据传输,服务端生成公私钥后保存,公钥给客户端进行加密,私钥在我们的服务端进行数据解密,私钥要保护好!私钥要保护好!私钥要保护好!
代码:
// 需要的夹包依赖maven
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.5</version>
</dependency>
// lombok idea插件自己装
package com.common.utils;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import lombok.extern.slf4j.Slf4j;
/**
* @author HeZeMin
* @className RsaBase64Utils
* @description RSA非对称加密,base64转码
* @date 2020/7/3 10:24
*/
@Slf4j
public class RsaBase64Utils {
// AES+base64编码秘钥,解密需要base64解码-test
public static final String AES_BASE64_KEY = "";
// 公钥-用于加密
private static final String PUBLIC_KEY = "xxxxxxxxxxx";
// 私钥-用于解密
private static final String PRIVATE_KEY = "xxxxxxxxxxxxxxxxxxxxxxxx";
/**
*
* @Description 根据base64编码串,先base64解码再进行RSA私钥解密
* @Return: java.lang.String
* @Author HeZeMin
* @Date 2020年07月03日 10:27
*/
public static String decrypt(String base64DecodeStr) throws Exception {
try {
RSA rsa1 = new RSA(PRIVATE_KEY, null);
byte[] decode = Base64.decode(base64DecodeStr);
byte[] decrypt = rsa1.decrypt(decode, KeyType.PrivateKey);
return StrUtil.utf8Str(decrypt);
} catch (Exception e) {
throw new Exception("密码解密失败!");
}
}
/**
*
* @Description 把数据进行RSA公钥加密,再base64编码
* @Return: java.lang.String
* @Author HeZeMin
* @Date 2020年07月03日 10:28
*/
public static String encrypt(String dataStr){
RSA rsa = new RSA(null, PUBLIC_KEY);
byte[] encrypt = rsa.encrypt(StrUtil.bytes(dataStr, CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
String encode = Base64.encode(encrypt);
return encode;
}
public static void main(String[] args) {
RSA rsa = new RSA();
//获得私钥
log.info("getPrivateKeyBase64:{}", rsa.getPrivateKeyBase64());
//获得公钥
log.info("getPublicKeyBase64:{}", rsa.getPublicKeyBase64());
}
}
本文暂时没有评论,来添加一个吧(●'◡'●)