Я хочу зашифровать фрейм с помощью DES, используя заданный ключ.
Я использую стиль заполнения PKCS5Padding. Это дополняет строку 02 02, если нужно добавить 2 байта, и 03 03 03, если нужно добавить 3 байта, чтобы сделать кратным 8. Но мое требование состоит в том, чтобы дополнить строку моими конкретными байтами. например, если 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);