字段加解密
简介
continew-starter-security-crypto
是 ContiNew Starter 提供的基于注解的字段加解密模块,支持敏感数据的自动加密存储和解密展示,提供开箱即用的数据安全保护方案。
主要特性
- 开箱即用: 基于注解的自动加解密处理
- 多算法支持: 支持 AES、DES、RSA 等主流加密算法
- 透明处理: 对业务代码无侵入,自动处理加解密逻辑
- 性能优化: 支持加密结果缓存,提升性能
使用步骤
引入依赖
xml
<dependency>
<groupId>top.continew.starter</groupId>
<artifactId>continew-starter-security-crypto</artifactId>
</dependency>
全局配置
配置详情请查看:top.continew.starter.security.crypto.autoconfigure.CryptoProperties
。
yaml
--- ### 安全配置:字段加/解密配置
continew-starter.security:
crypto:
enabled: true
# 对称加密算法密钥
password: abcdefghijklmnop
# 非对称加密算法密钥(在线生成 RSA 密钥对:http://web.chacuo.net/netrsakeypair)
public-key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAM51dgYtMyF+tTQt80sfFOpSV27a7t9uaUVeFrdGiVxscuizE7H8SMntYqfn9lp8a5GH5P1/GGehVjUD2gF/4kcCAwEAAQ==
private-key: MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAznV2Bi0zIX61NC3zSx8U6lJXbtru325pRV4Wt0aJXGxy6LMTsfxIye1ip+f2WnxrkYfk/X8YZ6FWNQPaAX/iRwIDAQABAkEAk/VcAusrpIqA5Ac2P5Tj0VX3cOuXmyouaVcXonr7f+6y2YTjLQuAnkcfKKocQI/juIRQBFQIqqW/m1nmz1wGeQIhAO8XaA/KxzOIgU0l/4lm0A2Wne6RokJ9HLs1YpOzIUmVAiEA3Q9DQrpAlIuiT1yWAGSxA9RxcjUM/1kdVLTkv0avXWsCIE0X8woEjK7lOSwzMG6RpEx9YHdopjViOj1zPVH61KTxAiBmv/dlhqkJ4rV46fIXELZur0pj6WC3N7a4brR8a+CLLQIhAMQyerWl2cPNVtE/8tkziHKbwW3ZUiBXU24wFxedT9iV
使用 @FieldEncrypt 注解
在需要加密的实体类字段上添加 @FieldEncrypt
注解。
java
@Data
public class User {
private Long id;
/**
* 用户名(普通字段)
*/
private String username;
/**
* 密码(不可逆加密)
*/
@FieldEncrypt(encryptor = BCryptEncryptor.class)
private String password;
/**
* 手机号(加密字段)
*/
@FieldEncrypt
private String phone;
/**
* 邮箱(加密字段)
*/
@FieldEncrypt
private String email;
// 其他字段略...
}
@FieldEncrypt 注解
java
/**
* 字段加/解密注解
*
* @author Charles7c
* @since 1.4.0
*/
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldEncrypt {
/**
* 加密/解密算法
*/
Algorithm value() default Algorithm.AES;
/**
* 加密/解密处理器
* <p>
* 优先级高于加密/解密算法
* </p>
*/
Class<? extends IEncryptor> encryptor() default IEncryptor.class;
/**
* 对称加密算法密钥
*/
String password() default "";
}
加密/解密算法枚举
目前支持的加密算法类型 Algorithm 如下:
枚举值 | 算法名称 |
---|---|
AES | AES |
DES | DES |
PBE_WITH_MD5_AND_DES | PBE With MD5 And DES |
RSA | RSA |
Base64 | Base64 |
核心依赖
依赖 | 描述 |
---|---|
top.continew.starter:continew-starter-core | 核心模块 |
cn.hutool:hutool-crypto | Hutool 加密解密模块(封装 JDK 中加密解密算法) |
com.baomidou:mybatis-plus-extension | MyBatis Plus(MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率) |
参考资料
- Hutool 加密解密文档:https://hutool.cn/docs/#/crypto/概述