# rpamis-security **Repository Path**: MumuIsMe/rpamis-security ## Basic Information - **Project Name**: rpamis-security - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-18 - **Last Updated**: 2026-04-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Logo

🔐 Rpamis-Security

中文  |  📖 文档

maven license jdk codecov deepwiki

---

🎉 基于 MyBatis 插件开发的企业级数据安全组件
提供注解式数据脱敏和数据库自动加解密功能

--- ## ✨ 核心特性 **🚀 开箱即用的企业级数据安全解决方案,让您专注于业务开发** - 🎭 **数据脱敏** - 支持9种内置脱敏规则,灵活的自定义脱敏,支持任意实体类型 - 🔒 **数据库加解密** - 基于Mybatis插件的自动加解密,入库加密,出库解密,支持Wrapper条件加密 - 🛡️ **国密SM4** - 支持国家标准SM4对称加密算法(GB/T 32907-2016),支持ECB/CBC模式 - 🔐 **AES加密** - 支持AES-128/256加密,提供GCM/CBC/ECB三种模式,国际标准高性能方案 - 🧵 **线程安全** - 基于 ThreadLocal 的 Cipher 管理,完全兼容虚拟线程(JDK 21+) - 📦 **任意类型支持** - 支持任意实体、List、Map,无论是否具有泛型,均支持脱敏和加解密 - 🔄 **嵌套脱敏** - 支持多层嵌套实体的脱敏,满足复杂场景需求 - ⚡ **零影响配置** - 加解密失败支持原值返回,不影响业务正常运行 - 📋 **深拷贝设计** - 新增入库后不改变源对象引用,支持save操作后继续操作对象 - 🔧 **高可扩展性** - 支持自定义加密算法、加解密类型处理器、脱敏类型处理器 - 🧪 **SQLite支持** - Demo使用SQLite数据库,零配置启动,便于快速验证 ## 📦 快速安装 ```xml com.rpamis rpamis-security-spring-boot-starter r-1.2.0 ``` **功能特性:** - ✅ 支持 JDK 8+ - ✅ Spring Boot 2.x 支持 - ✅ javax.* 命名空间 - ✅ 全部加密算法(AES-GCM/CBC/ECB, SM4-CBC/ECB) ## ⚠️ 破坏性变更 ### SM4 加密格式变更 从 `r-1.1.0` 版本开始,SM4 加密实现已从 hutool 迁移至 BouncyCastle,加密输出格式发生变更: - **影响范围**: 旧版本 SM4 加密的数据无法在新版本中解密 - **迁移方案**: 使用新版本重新加密现有数据 - **新格式**: `S4E_` 或 `S4C_` + Base64(IV + 密文) - **变更原因**: - 移除 hutool 依赖,使用 BouncyCastle 原生实现 - CBC 模式采用随机 IV,安全性更高 - 输出格式与 AES 保持一致 ### 自定义脱敏实现 数据脱敏功能已从 hutool 迁移至自定义实现,脱敏规则输出格式保持不变: - 姓名: `张三` → `张*` - 电话: `13812345678` → `138****5678` - 身份证: `110101199003073328` → `110***********3328` - 邮箱: `zhangsan@example.com` → `zhan****@example.com` - 银行卡: `6222020200099998888` → `6222 **** **** 8888` - 地址: `北京市朝阳区XX街道` → `北京市朝阳区********` ## 🎯 快速使用 ### ⚙️ 加解密配置 #### AES-GCM(推荐) ```yaml rpamis: security: enable: true algorithm: active: aes aes: key: MTIzNDU2Nzg5MDEyMzQ1Ng== # Base64 编码的 16 字节密钥 key-length: 128 # 128 或 256 mode: GCM # GCM、CBC 或 ECB ``` #### AES-CBC ```yaml rpamis: security: enable: true algorithm: active: aes aes: key: MTIzNDU2Nzg5MDEyMzQ1Ng== key-length: 128 mode: CBC ``` #### SM4-ECB(国密标准) ```yaml rpamis: security: enable: true algorithm: active: sm4 sm4: key: MTIzNDU2Nzg5MDEyMzQ1Ng== # Base64 编码的 16 字节密钥 mode: ECB # ECB 或 CBC(默认 ECB) ``` #### SM4-CBC(国密标准,推荐) ```yaml rpamis: security: enable: true algorithm: active: sm4 sm4: key: MTIzNDU2Nzg5MDEyMzQ1Ng== # Base64 编码的 16 字节密钥 mode: CBC # CBC 模式使用随机 IV,安全性更高 ``` ### 🔒 加解密注解 ```java public class User { private Long id; private String username; @SecurityField // 自动加解密 private String password; @SecurityField private String idCard; } ``` ### 🎭 脱敏注解 ```java public class User { private Long id; private String username; @Masked(type = MaskType.NAME_MASK) private String name; @Masked(type = MaskType.IDCARD_MASK) private String idCard; @Masked(type = MaskType.PHONE_MASK) private String phone; } ``` ## 📚 更多资源 | 资源 | 链接 | |-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 📖 **完整文档** | [网站文档](https://rpamis.github.io/rpamis-security/) | | 🚀 **快速开始** | [快速开始指南](https://rpamis.github.io/rpamis-security/docs/quick-start) | | 📐 **架构设计** | [架构设计文档](https://rpamis.github.io/rpamis-security/docs/architecture) | | 💡 **使用示例** | [示例代码](https://rpamis.github.io/rpamis-security/docs/examples) | | 🔧 **API 参考** | [API 文档](https://rpamis.github.io/rpamis-security/docs/api) | | 🔐 **AES 加密模块** | [AES 模块文档](docs/aes-encryption.md) | | 🛠️ **开发指南** | [二次开发指南](docs/developer-guide.md) | | 🧠 **原理解析** | [技术背景](https://benym.cn/notes/08-open-source-project/01-rpamis/03-security/02-rpamis-security-technical-background) / [原理分析](https://benym.cn/notes/08-open-source-project/01-rpamis/03-security/03-rpamis-security-principle-analysis) | ## 🏆 组件优势 | 特性 | Rpamis-Security | 同类项目 | |-----------------|----------------------------|-----------| | 支持任意实体类型脱敏 | ✅ 支持 List、Map、无泛型实体 | ❌ 仅支持单一实体 | | 支持嵌套脱敏 | ✅ 支持多层嵌套 | ❌ 不支持 | | 自动加解密 | ✅ 支持动态 SQL | ❌ 功能受限 | | 国密 SM4 | ✅ 支持(ECB、CBC) | 部分支持 | | AES 加密 | ✅ 支持(GCM、CBC、ECB、128/256位) | ❌ 不支持 | | 线程安全 | ✅ ThreadLocal Cipher | ❌ 无法保证 | | 虚拟线程 | ✅ JDK 21+ 兼容 | ❌ 未测试 | | 加解密失败处理 | ✅ 支持原值返回 | ❌ 不支持 | | 深拷贝设计 | ✅ 不改变源对象引用 | ❌ 不支持 | | 单测覆盖率 | ✅ 82%+ / 78+ 场景 | ❌ 无 | ## 🔄 版本兼容性 | 版本 | JDK | Spring Boot | Starter 组件 | |----------|-----|-------------|---------------------------------------| | r-1.2.0+ | 8+ | 2.x | `rpamis-security-spring-boot-starter` | **支持功能:** - ✅ AES-128/256(GCM、CBC、ECB 模式) - ✅ SM4(CBC、ECB 模式) - ✅ MyBatis Plus 集成 - ✅ Wrapper 条件自动加密 - ✅ 全部数据脱敏功能 ## 🤝 参与贡献

Rpamis-Security 100% 由开源社区的热情驱动
欢迎您的贡献和反馈!查看 贡献指南 了解更多

## 📄 开源协议 本项目基于 [Apache 2.0](LICENSE) 协议开源。 ---

Made with ❤️ by Rpamis Team