java DES算法加密:输入:明文和密钥 输出:密文 解密 :输入:密文和密钥 输出:明文
时间: 2024-05-06 09:22:14 浏览: 182
以下是Java中使用DES算法进行加密和解密的示例代码:
```
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class DESUtil {
// 加密
public static String encrypt(String plaintext, String key) {
try {
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "DES");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8));
return Base64.getEncoder().encodeToString(encryptedBytes);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
// 解密
public static String decrypt(String ciphertext, String key) {
try {
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "DES");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(ciphertext));
return new String(decryptedBytes, StandardCharsets.UTF_8);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
String plaintext = "hello world";
String key = "12345678";
String ciphertext = encrypt(plaintext, key);
System.out.println("加密后的密文:" + ciphertext);
String decryptedText = decrypt(ciphertext, key);
System.out.println("解密后的明文:" + decryptedText);
}
}
```
上述代码中,加密和解密的核心部分都使用了Java中的Cipher类来完成。在加密和解密时,需要指定加密算法、工作模式和填充方式,这里使用了DES算法、ECB模式和PKCS5Padding填充方式。同时,还需要使用SecretKeySpec类来指定密钥,并通过init方法初始化Cipher对象。在加密时,将明文转换为字节数组,然后调用doFinal方法进行加密操作,最后使用Base64进行编码。在解密时,将密文使用Base64进行解码,然后调用doFinal方法进行解密操作,最后将解密后的字节数组转换为字符串。
阅读全文