验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

Java网络数据怎么加密

阅读:950 来源:乙速云 作者:代码code

Java网络数据怎么加密

在 Java 中进行网络数据加密,通常分为 传输层加密应用层加密 两大类。下面从常见场景出发,给你一个清晰、实用的总结。


一、最推荐:使用 HTTPS(TLS/SSL)

这是最常见、最安全、最省事的方式。

1️⃣ 原理

  • 在传输层对数据进行加密
  • 使用 TLS(HTTPS = HTTP + TLS)
  • 不需要自己实现加密算法

2️⃣ Java 中的实现方式

✅ 客户端(Java)

URL url = new URL("https://example.com/api");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("GET");

InputStream in = conn.getInputStream();

✅ 服务端(Spring Boot)

server:
  port: 8443
  ssl:
    enabled: true
    key-store: classpath:keystore.p12
    key-store-password: changeit
    key-store-type: PKCS12

优点

  • 自动加密、完整性校验
  • 防中间人攻击
  • 不需要自己管密钥

适用场景

  • Web API
  • 前后端通信
  • 微服务间通信

二、Socket 通信加密(SSL/TLS)

如果你用的是 TCP Socket,可以手动启用 TLS。

1️⃣ 服务端

SSLServerSocketFactory factory =
        (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
SSLServerSocket serverSocket =
        (SSLServerSocket) factory.createServerSocket(8443);

2️⃣ 客户端

SSLSocketFactory factory =
        (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket socket =
        (SSLSocket) factory.createSocket("localhost", 8443);

适合

  • 自定义协议
  • 长连接
  • IM、游戏、IoT

三、应用层加密(数据本身加密)

已经建立连接的基础上,对数据内容加密。

1️⃣ 对称加密(AES,最常用)

适合加密大量数据

加密

KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey key = keyGen.generateKey();

Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);

byte[] encrypted = cipher.doFinal("hello".getBytes(StandardCharsets.UTF_8));

解密

cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decrypted = cipher.doFinal(encrypted);

注意

  • 密钥不能明文传输
  • 通常配合 RSA 或 HTTPS 交换密钥

2️⃣ 非对称加密(RSA)

适合加密小数据(如密钥)

KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
KeyPair keyPair = keyPairGen.generateKeyPair();

Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());

byte[] encrypted = cipher.doFinal("123456".getBytes());

常见用法

  • 用 RSA 加密 AES 密钥
  • 用 AES 加密业务数据

四、常见安全组合方案 ✅(推荐)

生产环境标准做法

HTTPS / TLS
   ↓
AES 加密业务数据
   ↓
RSA 加密 AES 密钥(可选)

五、JWT / Token 也算“加密”吗?

JWT 默认不是加密,是签名

  • 防篡改 ✅
  • 不防被看到 ❌

✅ 如果需要加密 JWT:

JWE (JSON Web Encryption)

六、常见错误 ❌

  • 自己实现加密算法 ❌
  • 明文传输密钥 ❌
  • 用 Base64 当作加密 ❌
  • 客户端硬编码密钥 ❌

七、如何选择?

场景 推荐方案
Web API HTTPS
Socket TLS Socket
数据敏感 HTTPS + AES
登录密码 HTTPS + 后端 Hash
微服务 mTLS

如果你愿意,可以告诉我:

  • ✅ 是 HTTP / Socket / WebSocket
  • ✅ 是 客户端-服务器 / 服务-服务
  • ✅ 数据敏感级别?

我可以直接给你 可运行的完整示例代码

分享到:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>