import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
public class DESUtil {
public static byte[] desKey;
static{
try{
desKey = initKey();
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 生成密钥
*/
public static byte[] initKey() throws Exception{
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
keyGen.init(56);
SecretKey secretKey = keyGen.generateKey();
return secretKey.getEncoded();
}
/**
* DES 加密
*/
public static byte[] encrypt(byte[] data, byte[] key) throws Exception{
SecretKey secretKey = new SecretKeySpec(key, "DES");
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] cipherBytes = cipher.doFinal(data);
return cipherBytes;
}
/**
* DES 解密
*/
public static byte[] decrypt(byte[] data, byte[] key) throws Exception{
SecretKey secretKey = new SecretKeySpec(key, "DES");
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] plainBytes = cipher.doFinal(data);
return plainBytes;
}
public static void main(String[] args) throws Exception {
//key得八位
Base64 base64 = new Base64(true);
String encrypt = base64.encodeAsString(encrypt("131asda0177".getBytes(StandardCharsets.UTF_8), "1baweide".getBytes(StandardCharsets.UTF_8)));
System.out.println(encrypt);
String decrypt = new String(decrypt(base64.decode(encrypt), "1baweide".getBytes(StandardCharsets.UTF_8)));
System.out.println(decrypt);
}
}