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);
}
相关文章
|
2月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
164 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
2月前
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
springboot解决js前端跨域问题,javascript跨域问题解决
|
2月前
|
Java 应用服务中间件
SpringBoot获取项目文件的绝对路径和相对路径
SpringBoot获取项目文件的绝对路径和相对路径
118 1
SpringBoot获取项目文件的绝对路径和相对路径
|
2月前
|
前端开发 测试技术
前端工程化的分支策略要如何与项目的具体情况相结合?
前端工程化的分支策略要紧密结合项目的实际情况,以实现高效的开发、稳定的版本控制和顺利的发布流程。
28 1
|
2月前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
61 8
|
2月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
51 2
|
2月前
|
前端开发 Unix 测试技术
揭秘!前端大牛们如何高效管理项目,确保按时交付高质量作品!
【10月更文挑战第30天】前端开发项目涉及从需求分析到最终交付的多个环节。本文解答了如何制定合理项目计划、提高团队协作效率、确保代码质量和应对项目风险等问题,帮助你学习前端大牛们的项目管理技巧,确保按时交付高质量的作品。
44 2
|
2月前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
43 0
|
3月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
199 1
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
131 62