Skip to content

🔐 RSA加密解密工具(RsaHelper)

📖 功能介绍

TIP

RsaHelper 是一个基于RSA算法的加密解密工具类,提供了数据加密和解密功能,支持自定义密钥对,适用于敏感数据传输和存储场景。

🛠️ 核心功能

1. 加密功能

方法说明参数返回值
encrypt(String data)使用默认密钥加密待加密数据加密后的字符串
encrypt(String data, String key)使用自定义密钥加密待加密数据, 公钥加密后的字符串

2. 解密功能

方法说明参数返回值
decrypt(String data)使用默认密钥解密加密数据解密后的字符串
decrypt(String data, String key)使用自定义密钥解密加密数据, 私钥解密后的字符串

⚙️ 配置说明

密钥对配置

yaml
wueasy:
  crypt:
    rsa:
      publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...  # 公钥
      privateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAAS...  # 私钥

NOTE

可以使用支付宝密钥生成工具生成RSA密钥对。

💡 使用示例

1. 使用默认密钥

java
// 加密示例
String sensitiveData = "123456789";
String encrypted = RsaHelper.encrypt(sensitiveData);
// 结果: 加密后的Base64字符串

// 解密示例
String decrypted = RsaHelper.decrypt(encrypted);
// 结果: "123456789"

2. 使用自定义密钥

java
// 自定义密钥加密
String customPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...";
String encrypted = RsaHelper.encrypt("敏感数据", customPublicKey);

// 自定义密钥解密
String customPrivateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAAS...";
String decrypted = RsaHelper.decrypt(encrypted, customPrivateKey);

3. 实际应用场景

java
// 密码加密传输
public class LoginRequest {
    private String username;
    private String encryptedPassword;
    
    public void setPassword(String password) {
        this.encryptedPassword = RsaHelper.encrypt(password);
    }
}

// 服务端解密
public class LoginService {
    public void login(LoginRequest request) {
        String password = RsaHelper.decrypt(request.getEncryptedPassword());
        // 进行密码验证
    }
}

⚠️ 注意事项

  1. 密钥管理

    • 妥善保管私钥
    • 定期更换密钥对
    • 避免密钥泄露
  2. 性能考虑

    • RSA适合小数据量加密
    • 大数据量建议使用对称加密
    • 考虑加解密性能开销
  3. 安全建议

    • 使用足够长度的密钥
    • 避免重复使用随机数
    • 注意密文保护
  4. 错误处理

    • 捕获加解密异常
    • 记录错误日志
    • 提供友好错误提示

🔧 常见问题

  1. 密钥格式问题

    java
    // 密钥必须是Base64编码的格式
    String publicKey = "BASE64_ENCODED_PUBLIC_KEY";
  2. 数据大小限制

    java
    // RSA加密数据大小限制
    // 1024位RSA密钥最大加密117字节
    // 2048位RSA密钥最大加密245字节
  3. 性能优化建议

    java
    // 对于大量数据,建议使用AES+RSA组合
    // AES加密数据,RSA加密AES密钥