程序员的资源宝库

网站首页 > gitee 正文

接口数据传输加密

sanyeah 2024-04-12 17:40:16 gitee 3 ℃ 0 评论

                                           数据加密

场景:我们客户端请求服务端时数据正常都是明文传输,这样的话容易出现数据安全漏洞

例子:登录注册时传输的密码,还是用户个人敏感信息,都是明文传输的话就太不安全了

解决:所以我们在客户端传输的时候,用非对称加密算法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());
    }
}

 

 

 

 

 

 

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表