所以我正在处理这个任务,我应该使用预定义的 aes 函数制作我自己的 CBC 和 CTR 算法,现在我似乎有一个问题,输出的大小总是比输入大一个块(输入 64,输出 80 ,依此类推)这是我正在使用的代码,十六进制到字节转换和字节到十六进制:
public static String encrypt(String PT,String skey) throws Exception, NoSuchPaddingException {
Cipher cipher = Cipher.getInstance("AES");
SecretKeySpec key = new SecretKeySpec(skey.getBytes("ascii"), "AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] val = hexToBytes(PT);
byte[] encVal = cipher.doFinal(val);
return byteToString(encVal);
}
转换函数运行良好,val 大小为 n * 16 字节,encVal 大小为 (n+1) * 16 字节