接口数据传输加密
数据加密
场景:我们客户端请求服务端时数据正常都是明文传输,这样的话容易出现数据安全漏洞
例子:登录注册时传输的密码,还是用户个人敏感信息,都是明文传输的话就太不安全了
解决:所以我们在客户端传输的时候,用非对称加密算法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()); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)