DES加密算法属于对称加密算法,即使用同一个密钥进行加解密(密钥长度为8位)
话不多说,直接上代码
1.DES加密算法
public static String encryptDes(String data, String key) throws InvalidKeyException, NoSuchAlgorithmException,
InvalidKeySpecException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException {
//密钥规范
KeySpec keySpec = new DESKeySpec(key.getBytes());
//密钥工厂
SecretKeyFactory sF = SecretKeyFactory.getInstance("Des");
//密钥
SecretKey secretKey = sF.generateSecret(keySpec);
//获取加密器
Cipher cipher = Cipher.getInstance("DES");
//初始化加密器
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
//加密数据
byte[] encryptData = cipher.doFinal(data.getBytes());
//Base64编码
return Base64.getEncoder().encodeToString(encryptData);
}
2.DES解密算法
public static String decryptDes(String encryptData, String key) throws InvalidKeyException, NoSuchAlgorithmException,
InvalidKeySpecException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException {
//秘钥规范
KeySpec keySpec = new DESKeySpec(key.getBytes());
//密钥工厂
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DES");
//密钥
SecretKey secretKey = secretKeyFactory.generateSecret(keySpec);
//解密器
Cipher cipher = Cipher.getInstance("DES");
//初始化解密器
cipher.init(Cipher.DECRYPT_MODE, secretKey);
//Base64解密
//解密数据
byte[] decodedData = Base64.getDecoder().decode(encryptData);
byte[] decryptData = cipher.doFinal(decodedData);
return new String(decryptData);
}
注意:DES算法的计算速度较快,同样带来的问题是秘钥长度短(为8位),所以有被破解的风险,建议使用AES加密算法(链接如下)