Skip to content

rpamis/rpamis-security

Repository files navigation

Logo

🔐 Rpamis-Security

中文  |  English  |  📖 Documentation

maven license jdk codecov deepwiki


🎉 A MyBatis-based enterprise data security component
Providing annotation-based data masking and automatic database encryption/decryption


✨ Core Features

🚀 Ready-to-use enterprise data security solution, letting you focus on business development

  • 🎭 Data Masking - Supports 9 built-in masking rules, flexible custom masking, supports any entity type
  • 🔒 Database Encryption - MyBatis plugin-based automatic encryption/decryption, encrypt on insert, decrypt on select
  • 🛡️ SM4 Support - Supports national standard SM4 symmetric encryption algorithm, secure and reliable
  • 📦 Any Type Support - Supports any entity, List, Map, with or without generics, all support masking and encryption/decryption
  • 🔄 Nested Masking - Supports multi-level nested entity masking, meeting complex scenario requirements
  • Zero Impact - Encryption/decryption failure supports returning original value, does not affect normal business operation
  • 📋 Deep Copy Design - New insertions do not change source object reference, supports continued object operations after save
  • 🔧 High Extensibility - Supports custom encryption algorithms, encryption/decryption type handlers, masking type handlers

📦 Quick Installation

💡 Version Note: Choose the appropriate version based on your JDK

  • JDK 17+ use version 1.1.4
  • JDK 8-17 use version 1.0.7

☕ JDK 17 and above

<dependency>
    <groupId>com.rpamis</groupId>
    <artifactId>rpamis-security-spring-boot-starter</artifactId>
    <version>1.1.4</version>
</dependency>

📦 JDK 8 - JDK 17

<dependency>
    <groupId>com.rpamis</groupId>
    <artifactId>rpamis-security-spring-boot-starter</artifactId>
    <version>1.0.7</version>
</dependency>

🎯 Quick Usage

🔒 Encryption Annotation

public class User {
    private Long id;

    private String username;
    
    @SecurityField
    private String password;
}

🎭 Masking Annotation

public class User {
    private Long id;

    private String username;
    
    @Masked(type = MaskType.NAME_MASK)
    private String name;
}

📚 Resources

Resource Link
📖 Full Documentation Documentation Website
🚀 Quick Start Quick Start Guide
📐 Architecture Architecture Design
💡 Examples Code Examples
🔧 API Reference API Documentation
🧠 Principle Analysis Technical Background / Principle Analysis
🤖 Agent Skill AI Agent Integration Guide - For AI-powered development assistance

🏆 Advantages

Feature Rpamis-Security Similar Projects
Any entity type masking ✅ List, Map, non-generic entities ❌ Single entity only
Nested masking ✅ Multi-level nesting ❌ Not supported
Auto encryption/decryption ✅ Dynamic SQL support ❌ Limited functionality
SM4 encryption ✅ Supported Partial support
Encryption failure handling ✅ Return original value ❌ Not supported
Deep copy design ✅ Preserves source reference ❌ Not supported
Test coverage ✅ 89%+ / 130+ scenarios ❌ None

🤝 Contributing

Rpamis-Security is 100% driven by the open source community
Contributions and feedback are welcome! Check out the Contributing Guide for more details

📄 License

This project is licensed under the Apache 2.0 License.


Made with ❤️ by Rpamis Team

About

rpamis-security, a mybatis encryption, decryption and desensitization component

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages