使用Java代码实现des算法
时间: 2023-12-03 18:04:55 浏览: 74
下面是使用Java代码实现DES算法的示例:
```java
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class DESExample {
public static void main(String[] args) throws Exception {
String plainText = "Hello, world!";
String key = "secretKey";
// Generate a secret key
SecretKey secretKey = KeyGenerator.getInstance("DES").generateKey();
// Convert the key to byte array
byte[] keyBytes = key.getBytes();
// Create a secret key spec object from the byte array
SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "DES");
// Create a cipher instance and initialize it for encryption
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
// Encrypt the plaintext
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());
// Convert the encrypted bytes to Base64 string
String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);
System.out.println("Encrypted text: " + encryptedText);
// Initialize the cipher for decryption
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
// Decrypt the encrypted text
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));
// Convert the decrypted bytes to plaintext
String decryptedText = new String(decryptedBytes);
System.out.println("Decrypted text: " + decryptedText);
}
}
```
说明:
- 使用 `KeyGenerator` 生成一个随机的秘钥。
- 使用 `SecretKeySpec` 将秘钥转换成秘钥规范对象。
- 使用 `Cipher` 对象进行加密和解密操作。在初始化对象时,需要指定加密算法、加密模式和填充模式。本例中使用的是 ECB 模式和 PKCS5 填充模式。
- 加密后的结果使用 Base64 编码,解密前需进行 Base64 解码。
阅读全文