주어진 키를 사용하여 DES를 사용하여 프레임을 암호화하고 싶습니다.DES를 사용하여 제공된 키를 사용하여 encyption 사용
사용중인 패딩 스타일은 PKCS5Padding입니다. 2 바이트를 추가하려면 02 02로 문자열을 채 웁니다. 8의 배수로 3 바이트를 추가하려면 03 03 03으로 문자열을 채 웁니다. 그러나 제 요구 사항은 특정 바이트로 문자열을 채우는 것입니다. 예를 들어 2 바이트가 추가되면 30 30 및 3 바이트가 추가되고 30 30 30 (16 진수의 값은 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);
선택하지 마십시오
맞습니다. 데이터와 패딩을 구별 할 수 없으므로 데이터가 30 시간으로 끝나지 않기를 바랍니다. Asker가 설명하는 패딩 메커니즘에 대해 들어 본 적이 없으므로 암호화 API에 포함되지 않습니다. –
답장을 보내 주셔서 감사합니다. 나는 똑같은 것을 시도 할 것이다. – java2485
@ 로버트 : 네, 항상 패딩을 추가하면 패딩이 생깁니다. 그것은 내 의견과 어떤 관련이 있습니까? –