import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
import java.security.Key;
import java.util.Base64;
public class DESUtil {
// , 8
private final static String IV_PARAMETER = "12345678";
//
private static final String ALGORITHM = "DES";
// / - -
private static final String CIPHER_ALGORITHM = "DES/CBC/PKCS5Padding";
//
private static final String CHARSET = "utf-8";
//
private static final String PASSWORD = "12345678";
// ,
private static final Key key = generateKey(PASSWORD);
/**
* key
*
* @param password
*/
private static Key generateKey(String password) {
try {
DESKeySpec dks = new DESKeySpec(password.getBytes(CHARSET));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
return keyFactory.generateSecret(dks);
} catch (Exception ex) {
return null;
}
}
/**
* DES
*
* @param data
* @return
*/
public static String encrypt(String data) {
if (data == null)
return null;
try {
Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
IvParameterSpec iv = new IvParameterSpec(IV_PARAMETER.getBytes(CHARSET));
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
byte[] bytes = cipher.doFinal(data.getBytes(CHARSET));
return new String(Base64.getEncoder().encode(bytes));
} catch (Exception e) {
return data;
}
}
/**
* DES
*
* @param data
* @return
*/
public static String decrypt(String data) {
if (data == null)
return null;
try {
Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
IvParameterSpec iv = new IvParameterSpec(IV_PARAMETER.getBytes(CHARSET));
cipher.init(Cipher.DECRYPT_MODE, key, iv);
return new String(cipher.doFinal(Base64.getDecoder().decode(data.getBytes(CHARSET))), CHARSET);
} catch (Exception e) {
return data;
}
}
}