用java写一个自己输入明文与密钥的DES算法
时间: 2024-03-12 13:46:57 浏览: 13
好的,以下是一个简单的Java代码,实现了使用用户输入的明文和密钥进行DES加密和解密的功能:
```
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import java.util.Base64;
import java.util.Scanner;
public class DESExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入明文:");
String plainText = scanner.nextLine();
System.out.print("请输入密钥:");
String key = scanner.nextLine();
try {
byte[] encrypted = encrypt(plainText.getBytes(), key.getBytes());
System.out.println("加密后的密文:" + Base64.getEncoder().encodeToString(encrypted));
byte[] decrypted = decrypt(encrypted, key.getBytes());
System.out.println("解密后的明文:" + new String(decrypted));
} catch (Exception e) {
e.printStackTrace();
}
}
public static byte[] encrypt(byte[] plainText, byte[] key) throws Exception {
DESKeySpec desKeySpec = new DESKeySpec(key);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return cipher.doFinal(plainText);
}
public static byte[] decrypt(byte[] cipherText, byte[] key) throws Exception {
DESKeySpec desKeySpec = new DESKeySpec(key);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return cipher.doFinal(cipherText);
}
}
```
在这个示例中,我们使用了Java的加密库javax.crypto,通过DES算法实现了加密和解密功能。用户可以通过控制台输入明文和密钥,程序会输出加密后的密文和解密后的明文。
需要注意的是,这个示例中使用了ECB模式和PKCS5Padding填充方式,这是DES算法的默认设置,但实际应用中可能需要根据具体情况选择不同的模式和填充方式。此外,DES算法已经被认为不够安全,建议使用更加安全的算法,如AES算法。