springboot项目实现实体类加密存库,解密返回给前端

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: springboot项目实现实体类加密存库,解密返回给前端

常用的加密方式

常见的加密方式包括对称加密和非对称加密。

  • 对称加密:对称加密也称为共享密钥加密,使用相同的密钥进行加密和解密。由于加密和解密都使用相同的密钥,因此对称加密算法的加密和解密速度都很快。常见的对称加密算法包括AES、DES、3DES、Blowfish等。
  • 非对称加密:非对称加密也称为公钥加密,使用一对密钥进行加密和解密,包括公钥和私钥。公钥可以公开发布给其他人使用,而私钥只有持有者可以使用。非对称加密算法的加密和解密速度较慢,但是它提供了更好的安全性和可信度。常见的非对称加密算法包括RSA、DSA、ECC等。

除了对称加密和非对称加密,还有一些其他的加密方式,如哈希加密、混淆加密等,这些加密方式都有其特定的应用场景和优缺点。同时,为了提高加密的安全性,还可以将不同的加密方式组合起来使用,例如对称加密和非对称加密的组合、加密和数字签名的组合等。

利用RSA将JSON加密存到数据库

场景,对于一些重要的配置信息,比如支付宝扫码配置信息等,我们可以将这种配置信息作为一个实体,转为JSON存到数据库,定义一个biz_type作为类型区别,直接开干

1️⃣:首先引入hutool工具类

<dependency>
  <groupId>cn.hutool</groupId>
  <artifactId>hutool-all</artifactId>
  <version>5.7.17</version>
</dependency>

2️⃣:创建配置工具类(加密,解密)

package com.test.rsa.util;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
/**
 * @author xiaobo
 * @date 2023/3/22
 */
public class ConfigureRsaUtils {
    public static final String RSA_PRIVATE_KEY = "";
    public static final String RSA_PUBLIC_KEY = "";
    /**
     * description: 解密配置中的字符串
     *
     * @param configParam 配置文件中的加密字符串
     * @param beanClass   Bean对象
     * @return T
     * @author bo
     * @date 2023/3/22 3:05 PM
     */
    public static <T> T decryptConfigStr(String configParam, Class<T> beanClass) {
        RSA rsa = new RSA(RSA_PRIVATE_KEY, RSA_PUBLIC_KEY);
        String decryptStr = rsa.decryptStr(configParam, KeyType.PrivateKey);
        return JSONUtil.toBean(decryptStr, beanClass);
    }
    /**
     * description: 加密bean对象生成字符串
     *
     * @param object Bean对象
     * @return java.lang.String
     * @author bo
     * @date 2023/3/22 3:11 PM
     */
    public static String encryptConfigStr(Object object) {
        RSA rsa = new RSA(RSA_PRIVATE_KEY, RSA_PUBLIC_KEY);
        return rsa.encryptBase64(JSON.toJSONString(object), KeyType.PublicKey);
    }
}

ℹ️:这里的私密和公密可以直接利用hutool工具类生成

3️⃣:通过泛型获取实体VO对象

/**
* 获取配置实体的Vo对象
*/
public <T> T getConfigContentVo(Class<T> beanClass, String bizType) {
  SysConfig sysConfig = dao.selectOne(new QueryWrapper<SysConfig>().eq("biz_type", bizType));
  return ObjectUtil.isEmpty(sysConfig) ? null : ConfigureRsaUtils.decryptConfigStr(sysConfig.getConfigContent(), beanClass);
}
目录
打赏
0
0
0
0
48
分享
相关文章
Spring Boot 便利店销售系统项目分包设计解析
本文深入解析了基于Spring Boot的便利店销售系统分包设计,通过清晰的分层架构(表现层、业务逻辑层、数据访问层等)和模块化设计,提升了代码的可维护性、复用性和扩展性。具体分包结构包括`controller`、`service`、`repository`、`entity`、`dto`、`config`和`util`等模块,职责分明,便于团队协作与功能迭代。该设计为复杂企业级应用开发提供了实践参考。
54 0
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
35 0
深入理解 Spring Boot 项目中的分页与排序功能
本文深入讲解了在Spring Boot项目中实现分页与排序功能的完整流程。通过实际案例,从Service层接口设计到Mapper层SQL动态生成,再到Controller层参数传递及前端页面交互,逐一剖析每个环节的核心逻辑与实现细节。重点包括分页计算、排序参数校验、动态SQL处理以及前后端联动,确保数据展示高效且安全。适合希望掌握分页排序实现原理的开发者参考学习。
46 4
两种Spring Boot 项目启动自动执行方法的实现方式
在Spring Boot项目启动后执行特定代码的实际应用场景中,可通过实现`ApplicationRunner`或`CommandLineRunner`接口完成初始化操作,如系统常量或配置加载。两者均支持通过`@Order`注解控制执行顺序,值越小优先级越高。区别在于参数接收方式:`CommandLineRunner`使用字符串数组,而`ApplicationRunner`采用`ApplicationArguments`对象。注意,`@Order`仅影响Bean执行顺序,不影响加载顺序。
Spring Boot 项目中触发 Circular View Path 错误的原理与解决方案
在Spring Boot开发中,**Circular View Path**错误常因视图解析与Controller路径重名引发。当视图名称(如`login`)与请求路径相同,Spring MVC无法区分,导致无限循环调用。解决方法包括:1) 明确指定视图路径,避免重名;2) 将视图文件移至子目录;3) 确保Spring Security配置与Controller路径一致。通过合理设定视图和路径,可有效避免该问题,确保系统稳定运行。
67 0
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
60 0
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
在微服务架构中,随着业务复杂度增加,项目可能需要调用多个微服务。为避免使用`@Value`注解逐一引入配置的繁琐,可通过定义配置类(如`MicroServiceUrl`)并结合`@ConfigurationProperties`注解实现批量管理。此方法需在配置文件中设置微服务地址(如订单、用户、购物车服务),并通过`@Component`将配置类纳入Spring容器。最后,在Controller中通过`@Resource`注入配置类即可便捷使用,提升代码可维护性。
40 0
基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行
基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的鲜花商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
30 7
基于Java+Springboot+Vue开发的旅游景区管理系统源码+运行
基于Java+Springboot+Vue开发的旅游景区管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的旅游景区管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
28 9

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等