用Java完成DES算法的实现
时间: 2023-10-20 15:07:16 浏览: 35
以下是用Java实现DES算法的示例代码:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class DESExample {
public static void main(String[] args) throws Exception {
// 输入的明文和密钥
String plainText = "Hello, World!";
String key = "12345678";
// 创建DES算法实例,使用ECB模式和PKCS5Padding填充方式
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
// 创建密钥规则
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "DES");
// 初始化加密器,使用密钥规则和加密模式
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
// 加密明文
byte[] encrypted = cipher.doFinal(plainText.getBytes());
// 输出加密结果
System.out.println("加密后的数据:" + bytesToHex(encrypted));
// 初始化解密器,使用密钥规则和解密模式
cipher.init(Cipher.DECRYPT_MODE, keySpec);
// 解密密文
byte[] decrypted = cipher.doFinal(encrypted);
// 输出解密结果
System.out.println("解密后的数据:" + new String(decrypted));
}
// 将字节数组转换为十六进制字符串
private static String bytesToHex(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02X", b));
}
return sb.toString();
}
}
```
在以上示例代码中,我们使用Java标准库中的`javax.crypto`包提供的`Cipher`类实现DES算法的加密和解密。其中,`Cipher.getInstance("DES/ECB/PKCS5Padding")`语句创建了一个DES算法实例,使用ECB模式和PKCS5Padding填充方式。`SecretKeySpec`类用于生成密钥规则。`cipher.init(Cipher.ENCRYPT_MODE, keySpec)`和`cipher.init(Cipher.DECRYPT_MODE, keySpec)`分别初始化加密器和解密器,并指定加密/解密模式和密钥规则。`cipher.doFinal()`方法用于加密和解密数据。最后,`bytesToHex`方法用于将字节数组转换为十六进制字符串,方便输出结果。