一、加密算法
| 类型 | 用途 | 特点 | 示例 | 推荐使用 | 安全性评价 | 适用场景 |
|---|---|---|---|---|---|---|
| 对称加密 | 加密大量数据 | 加密解密速度快,密钥管理难 | DES | 否 | 弱 | 老旧系统兼容性 |
| 3DES | 否 | 中 | 有限制的老旧系统 | |||
| AES (Rijndael) | 是 | 强 | 大量数据加密,现代应用 | |||
| SM4 (SMS4) | 是 | 强 | 国密标准,国内应用 | |||
| Blowfish | 否 | 中 | 小规模应用 | |||
| 非对称加密 | 安全通信,数字签名 | 安全性高,但速度慢 | RSA | 是 | 强 | 数字签名,密钥交换 |
| ECC (Elliptic Curve Cryptography) | 是 | 强 | 密钥交换,移动设备 | |||
| 散列函数 | 数据完整性校验,密码存储 | 单向,不可逆 | MD5 | 否 | 弱 | 消息摘要(非安全性要求) |
| SHA-1 | 否 | 弱 | 消息摘要(非安全性要求) | |||
| SHA-256 | 是 | 强 | 安全消息摘要,密码哈希 | |||
| SM3 | 是 | 强 | 国密标准,国内应用 | |||
| 编码 | 编码二进制数据为文本形式 | 不是加密,可逆转换 | Base64 | 否 | N/A | 传输二进制数据,邮件附件等 |
备注:
- DES:由于密钥长度较短(56位),已经容易受到攻击,因此不再推荐使用。
- 3DES:通过使用三倍的密钥长度来增强安全性,但在性能上不如AES。
- AES:是目前最广泛使用的对称加密算法之一,支持128、192和256位密钥长度。
- SM4:是中国国家密码管理局制定的一种分组密码算法,适用于国内应用。
- RSA:是一种非常常见的非对称加密算法,广泛用于数字签名和密钥交换。
- ECC:与RSA相比,在相同安全水平下可以使用更短的密钥,更适合移动设备。
- MD5 和 SHA-1:由于已知的碰撞攻击,不再推荐用于安全性要求高的场合。
- SHA-256:是目前较为安全的散列函数之一,适合用于密码存储和其他需要高强度散列的应用。
- Base64:是一种编码方式,而不是加密算法,主要用于将二进制数据转换为可以在文本环境中安全传输的形式。
二、工具类展示
public class EncryptUtils {
/**
* 公钥
*/
public static final String PUBLIC_KEY = "publicKey";
/**
* 私钥
*/
public static final String PRIVATE_KEY = "privateKey";
/**
* Base64加密
*
* @param data 待加密数据
* @return 加密后字符串
*/
public static String encryptByBase64(String data) {
return Base64.encode(data, StandardCharsets.UTF_8);
}
/**
* Base64解密
*
* @param data 待解密数据
* @return 解密后字符串
*/
public static String decryptByBase64(String data) {
return Base64.decodeStr(data, StandardCharsets.UTF_8);
}
/**
* AES加密
*
* @param data 待解密数据
* @param password 秘钥字符串
* @return 加密后字符串, 采用Base64编码
*/
public static String encryptByAes(String data, String password) {
if (StrUtil.isBlank(password)) {
throw new IllegalArgumentException("AES需要传入秘钥信息");
}
// aes算法的秘钥要求是16位、24位、32位
int[

最低0.47元/天 解锁文章
1755

被折叠的 条评论
为什么被折叠?



