特定のキーを使用して DES を使用してフレームを暗号化したい。
私が使用しているパディング スタイルは PKCS5Padding です。これにより、2 バイトを追加する場合は 02 02 で文字列がパディングされ、3 バイトを追加して 8 の倍数にする場合は 03 03 03 でパディングされます。しかし、私の要件は、特定のバイトで文字列をパディングすることです。たとえば、2 バイトを追加する場合は 30 30 を追加し、3 バイトを追加する場合は 30 30 30 を追加します (16 進数の 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);