主题切换
🔐 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());
// 进行密码验证
}
}
⚠️ 注意事项
密钥管理
- 妥善保管私钥
- 定期更换密钥对
- 避免密钥泄露
性能考虑
- RSA适合小数据量加密
- 大数据量建议使用对称加密
- 考虑加解密性能开销
安全建议
- 使用足够长度的密钥
- 避免重复使用随机数
- 注意密文保护
错误处理
- 捕获加解密异常
- 记录错误日志
- 提供友好错误提示
🔧 常见问题
密钥格式问题
java// 密钥必须是Base64编码的格式 String publicKey = "BASE64_ENCODED_PUBLIC_KEY";
数据大小限制
java// RSA加密数据大小限制 // 1024位RSA密钥最大加密117字节 // 2048位RSA密钥最大加密245字节
性能优化建议
java// 对于大量数据,建议使用AES+RSA组合 // AES加密数据,RSA加密AES密钥