AES、RSA前后端数据传递加密技术

1. 对称加密 (Symmetric Encryption)

  • 特点

    • 加密和解密使用同一个密钥。

    • 速度快,适合大量数据或文件加解密。

    • 安全性完全依赖于密钥管理,密钥泄露风险需注意。

  • 算法示例

    • AES、DES 等。
  • 使用场景

    • 数据传输量大且对密钥安全性可控。
  • 注意

    • 前后端必须共享密钥。

    • 密钥传输必须安全。

2. 非对称加密 (Asymmetric Encryption)

    • 加密用公钥,解密用私钥。

    • 公钥可公开,私钥需安全存储。

    • 速度慢,不适合大文件加解密。

  • 算法示例

    • RSA、ECC 等。
  • 使用场景

    • 数据量小,对安全性要求高,或需要通过网络交换密钥。
  • 注意

    • 数据接收方公布公钥,私钥保留。

3. 混合加密 (Hybrid Encryption)

  • 方法

    • 使用非对称加密交换对称加密密钥(会话密钥)。

    • 使用对称加密进行实际数据加解密。

  • 优势

    • 结合对称加密的高效性与非对称加密的安全性。
  • 使用场景

    • 大多数实际应用场景。
  • 加密时序图

    • 对称加密:加密业务数据

    • 非对称加密:加密对称密钥

4. AES加密工具类 (AESUtil)

4.1 依赖

<dependency>  
  <groupId>cn.hutool</groupId>  
  <artifactId>hutool-all</artifactId>  
  <version>5.8.18</version>  
</dependency>

4.2 功能

  • 生成随机 AES 密钥

  • 数据加密/解密

  • Base64 编码/解码

  • Hex字符串 ↔ byte[] 转换4.3 核心方法

  • 生成密钥

    String getAESKey(int length)        // 指定长度随机字符串密钥  
    byte[] generateRandomAesKey()      // 随机AES密钥字节数组  
    String generateRandomAesKeyWithBase64() // Base64编码
    
  • 加密/解密

    byte[] encrypt(byte[] data, byte[] aesKey)  
    byte[] decrypt(byte[] data, byte[] aesKey)  
    String encryptToBase64(String data, String aesKey)  
    String decryptFromBase64(String data, String aesKey)  
    String encryptWithKeyBase64(String data, String aesKey)  
    String decryptWithKeyBase64(String data, String aesKey)
    
  • 格式转换

    String toHexString(byte[] b)       // byte[] → Hex  
    byte[] toBytes(String s)           // Hex → byte[] 
    

5. RSA加密工具类 (RSAUtil)

5.1 功能

  • 生成密钥对

  • 公钥加密 / 私钥解密

  • 支持 Base64 和 Hex 编码转换

5.2 核心方法

  • 密钥生成

    Map generateRandomToBase64Key()
    
  • 加解密

    byte[] encryptByPublicKey(byte[] data, String publicKey, int length)  
    byte[] decryptByPrivateKey(byte[] data, String privateKey, int length)
    
  • 编码转换

    byte[] decryptBASE64(String src)  
    String encryptBASE64(byte[] src)  
    String toHexString(byte[] b)  
    byte[] toBytes(String s)
    
  • 说明

    • 加密结果为 byte[],可转换为 Base64 或 Hex 字符串后传输。

    • 解密前需确保密文格式与加密方法一致。

6. 加密选择建议

场景 方案
数据量大、低安全需求 对称加密
数据量小、高安全需求或密钥需网络传输 非对称加密
综合性能与安全 混合加密(对称加密 + 非对称加密密钥传输)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容