1
我想使用DES使用給定的密鑰來加密幀。使用提供的密鑰使用帶填充的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);
這是正確的,但我希望您的數據不會以30h結束,因爲無法區分數據和填充。我從來沒有聽說過提交者描述的填充機制,所以它不會被包含在任何加密API中。 –
好的謝謝你的答案。我會嘗試相同的。 – java2485
@Robert:是的,如果你總是添加填充,那麼會有填充。這與我的評論有什麼關係? –