java实现3des加密
时间: 2023-10-16 22:10:56 浏览: 42
在Java中,你可以使用`javax.crypto`包中的`Cipher`类来实现3DES加密。以下是一个简单的示例代码:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class TripleDesEncryption {
public static void main(String[] args) {
try {
String message = "Hello, World!";
String key = "abcdefghijklmnopqrstuvwx"; // 24字节的密钥
// 将密钥转换为字节数组
byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8);
// 创建一个SecretKeySpec对象,指定密钥和算法
SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "DESede");
// 创建一个Cipher对象,指定算法和模式
Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
// 设置Cipher为加密模式,并传入密钥
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
// 对消息进行加密
byte[] encryptedBytes = cipher.doFinal(message.getBytes(StandardCharsets.UTF_8));
// 将加密后的字节数组进行Base64编码
String encryptedMessage = Base64.getEncoder().encodeToString(encryptedBytes);
System.out.println("Encrypted message: " + encryptedMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在上面的示例中,我们使用了ECB模式和PKCS5Padding填充方式。你可以根据需要选择不同的模式和填充方式。解密的过程类似,只需要将`cipher.init()`方法的第一个参数改为`Cipher.DECRYPT_MODE`,然后调用`cipher.doFinal()`方法解密即可。
请注意,在实际应用中,为了安全起见,建议使用更长的密钥,并且密钥的生成方式应该是安全的。此示例仅用于演示目的。