package com.dataservice.utils.crypto
import java.security.Key
import java.security.spec.AlgorithmParameterSpec
import javax.crypto.Cipher
import javax.crypto.SecretKeyFactory
import javax.crypto.spec.DESKeySpec
import javax.crypto.spec.IvParameterSpec
import lombok.extern.slf4j.Slf4j
import org.bouncycastle.util.encoders.Base64
@Slf4j
public class DesUtil {
public static String encodeBcb(String key, byte[] data) throws Exception {
DESKeySpec dks = new DESKeySpec(key.getBytes())
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES")
// key的长度不能够小于8位字节
Key secretKey = keyFactory.generateSecret(dks)
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding")
IvParameterSpec iv = new IvParameterSpec("12345678".getBytes())
AlgorithmParameterSpec paramSpec = iv
cipher.init(Cipher.ENCRYPT_MODE, secretKey, paramSpec)
byte[] bytes = cipher.doFinal(data)
return new String(Base64.encode(bytes))
}
public static byte[] decodeBcb(String key, byte[] data) throws Exception {
try {
DESKeySpec dks = new DESKeySpec(key.getBytes())
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES")
// key 的长度不能够小于8 位字节
Key secretKey = keyFactory.generateSecret(dks)
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding")
IvParameterSpec iv = new IvParameterSpec("12345678".getBytes())
AlgorithmParameterSpec paramSpec = iv
cipher.init(Cipher.DECRYPT_MODE, secretKey, paramSpec)
return cipher.doFinal(data)
} catch (Exception e) {
log.error("decode bcb error", e)
throw e
}
}
}