我想使用给定密钥使用 DES 加密帧。
我使用的填充样式是 PKCS5Padding。如果要添加 2 个字节,则使用 02 02 填充字符串,如果要添加 3 个字节以形成 8 的倍数,则使用 03 03 03 填充字符串。但我的要求是用我的特定字节填充字符串。例如,如果要添加 2 个字节,则添加 30 30 和 3 个字节,然后添加 30 30 30(十六进制 0 的值为 30)。另外,我必须知道添加了多少填充字节。我应该遵循哪种填充技术以及如何使用它?
以下是我的加密代码:
byte[] keyValue = new byte[]{(byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x16,(byte) 0x05, (byte) 0x12};
myKeySpec = new DESKeySpec(keyValue);
mySecretKeyFactory = SecretKeyFactory.getInstance("DES");
key = mySecretKeyFactory.generateSecret(myKeySpec);
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
IvParameterSpec iv2 = new IvParameterSpec(new byte[8]);
cipher.init(Cipher.ENCRYPT_MODE, key, iv2);
byte[] plainText = function.HexStringToByteArray(payloadRecv);
byte[] encryptedText = cipher.doFinal(plainText);