import java.util.Scanner;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.xml.bind.DatatypeConverter;
import org.apache.commons.codec.binary.Hex;
public class DES2 {
public static void main(String[] args) {
DESEncryption();
DESDecryption();
}
public static void DESEncryption() {
try {
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要加密内容:");
String src = sc.nextLine();
System.out.println("请输入密钥:");
String str1 = sc.nextLine();
byte[] bytesKey = str1.getBytes();
DESKeySpec desKeySpec = new DESKeySpec(bytesKey);
SecretKeyFactory factory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = factory.generateSecret(desKeySpec);
// DES加密
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] result = cipher.doFinal(src.getBytes());
String hex = DatatypeConverter.printHexBinary(result);
System.out.println("Hex:" + hex.toLowerCase());
System.out.println("DES加密:" + Hex.encodeHexString(result));
} catch (Exception e) {
// TODO: handle exception
}
}
public static void DESDecryption() {
try {
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要解密内容:");
String str1 = sc.nextLine();
System.out.println("请输入密钥:");
String str2 = sc.nextLine();
byte[] bytesKey = str2.getBytes();
DESKeySpec desKeySpec = new DESKeySpec(bytesKey);
SecretKeyFactory factory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = factory.generateSecret(desKeySpec);
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] result2 = cipher.doFinal(str1.getBytes());
System.out.println("DES解密:" + new String(result2));
} catch (Exception e) {
System.out.println("解密异常");
}
}
}