java 如何加密
加密方法概述
Java提供了多种加密方式,包括对称加密、非对称加密、哈希算法等。常用的加密工具类位于javax.crypto和java.security包中。
对称加密(AES示例)
对称加密使用相同的密钥进行加密和解密。AES(Advanced Encryption Standard)是常用的对称加密算法。
生成密钥
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(256); // 密钥长度(128/192/256)
SecretKey secretKey = keyGenerator.generateKey();
加密与解密

Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedData = cipher.doFinal("明文数据".getBytes());
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
非对称加密(RSA示例)
非对称加密使用公钥加密、私钥解密。RSA是典型的非对称加密算法。
生成密钥对
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048); // 密钥长度
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
加密与解密

Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedData = cipher.doFinal("明文数据".getBytes());
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
哈希算法(SHA-256示例)
哈希算法用于生成数据的唯一摘要,不可逆。常用于密码存储或数据完整性校验。
计算哈希值
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hashBytes = digest.digest("原始数据".getBytes());
String hexHash = DatatypeConverter.printHexBinary(hashBytes);
使用HTTPS传输加密
对于网络传输,可通过SSL/TLS(如HTTPS)实现加密。Java中需配置密钥库和信任库:
System.setProperty("javax.net.ssl.keyStore", "path/to/keystore.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "password");
注意事项
- 密钥管理:避免硬编码密钥,推荐使用密钥管理系统(如AWS KMS)。
- 算法选择:优先选择AES-256、RSA-2048等安全算法,避免DES等弱加密。
- 异常处理:捕获
NoSuchAlgorithmException、InvalidKeyException等异常。
通过上述方法,可灵活实现Java中的各类加密需求。






