我正在使用一种非常标准的 Java AES 加密/解密方式。
byte[] key = hexStringToByteArray("C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF");
byte[] message = hexStringToByteArray("01A0A1A2A3A4A5A6A703020100060001");
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
// Instantiate the cipher
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encrypted = cipher.doFinal(message);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] original = cipher.doFinal(encrypted);
如您所见,我使用的是 128 位密钥和 128 位消息。我几乎总是得到我期望的结果,但是,加密的结果总是 256 位长。第二个 128 位始终相同。除了截断结果之外,我如何确保密码只返回前 128 位,而不更改前 128 位?我觉得我在这里对块大小的定义有点混淆了。