没有iv向量,但是有初始值counter(计数器)
/**
* DES解密:CTR操作模式
*
* @param cipherText:密文
* @param key:密钥
* @param iv:初始计数器
* @return 原文
*/
public static String decryptCTR(String cipherText, String key, String counter) {
try {
// 获取解密密钥
byte[] keyBytes = getKey(key);
Key keySpec = new SecretKeySpec(keyBytes, ALGORITHM);
// 获取初始矢量
byte[] ivBytes = counter.getBytes(CHARACTER);
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
// 获取Cipher实例
Cipher cipher = Cipher.getInstance("DES/CTR/PKCS5Padding");
// 初始化Cipher实例,设置执行模式,解密密钥和初始计数器
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
// 解密
byte[] cipherTextBytes = hex2byte(cipherText);
byte[] plainTextBytes = cipher.doFinal(cipherTextBytes);
// 返回明文
return new String(plainTextBytes, CHARACTER);
} catch (Exception e) {
System.out.println("CTR解密异常");
e.printStackTrace();
}
return null;
}