Skip to content

加密解密与数据安全工具指南

依赖检查

使用前确认项目已引入 digitalhainan-tools 依赖:

xml
<dependency>
    <groupId>cn.com.digitalhainan</groupId>
    <artifactId>digitalhainan-tools</artifactId>
    <version>${digitalhainan.version}</version>
</dependency>

工具类索引

工具类功能参考文档
AESUtilsAES 加密解密crypto-utils.md
RSAUtilsRSA 公钥/私钥加密解密crypto-utils.md
SM4Utils国密 SM4 加密解密(ECB/CBC)crypto-utils.md
Md5UtilsMD5 哈希crypto-utils.md
Sha256UtilsSHA256 哈希crypto-utils.md
DesensitizeUtils数据脱敏(身份证/手机号/姓名/邮箱)desensitize-utils.md
IdNoUtils身份证号校验和信息提取idno-utils.md

场景选择速查

场景推荐工具类说明
对称加密(AES)AESUtilsAES/CBC/PKCS5Padding,默认 IV 和密钥已内置
非对称加密(RSA)RSAUtils支持公钥加密、私钥解密、加盐模式
国密对称加密(SM4)SM4Utils支持 ECB 和 CBC 模式
密码哈希Md5Utils / Sha256UtilsMD5(32位小写)、SHA256
身份证号脱敏DesensitizeUtils保留前3后4
手机号脱敏DesensitizeUtils保留前3后4
姓名脱敏DesensitizeUtils根据长度自动处理
邮箱脱敏DesensitizeUtils保留首字母和域名
身份证号校验IdNoUtils支持15位和18位
提取身份证性别IdNoUtils返回 M/F
提取身份证出生日期IdNoUtils返回 LocalDate

快速示例

AES 加解密

java
import cn.com.digitalhainan.tools.secret.AESUtils;

String plainText = "敏感数据123";
String key = "8192553d3db81630";

String encrypted = AESUtils.encrypt(plainText, key);
String decrypted = AESUtils.decrypt(encrypted, key);

国密 SM4 加解密

java
import cn.com.digitalhainan.tools.secret.SM4Utils;

SM4Utils sm4 = new SM4Utils();
String encrypted = sm4.encryptData_ECB(plainText, key);
String decrypted = sm4.decryptData_ECB(encrypted, key);

数据脱敏

java
import cn.com.digitalhainan.tools.DesensitizeUtils;

String maskedIdNo = DesensitizeUtils.desensitizeIdNoFirstThreeLastFour(idNo);
String maskedPhone = DesensitizeUtils.desensitizePhoneFirstThreeLastFour(phone);
String maskedName = DesensitizeUtils.desensitizeNameFirstOneLastOne(name);

身份证号校验

java
import cn.com.digitalhainan.tools.IdNoUtils;

boolean valid = IdNoUtils.isIDNumber(idNo);
String gender = IdNoUtils.getGenderFromIdNo(idNo);
LocalDate birthday = IdNoUtils.getBirthdayFromIdNo(idNo);

Do's and Don'ts

Do(推荐做法)Don't(避免做法)
生产环境密钥通过配置中心或环境变量注入将密钥硬编码在代码中
使用 SM4Utils 处理国密合规场景在需要国密合规时使用 AES/RSA
服务端完成数据脱敏后再返回给前端返回全量敏感数据由前端脱敏
身份证号校验使用 IdNoUtils.isIDNumber()手写正则校验身份证号

参考文档

文档内容
crypto-utils.mdAES/RSA/SM4/MD5/SHA256 完整使用示例
desensitize-utils.md身份证/手机号/姓名/邮箱脱敏示例
idno-utils.md身份证号校验、性别提取、出生日期提取

Power By 数字海南