AES/ECB/PKCS5Padding을 사용하여 문자열을 인코딩해야합니다. 암호화 된 결과 (바이트를 원하지 않는 새 String (encryptedResult))는 파트너에게 전송됩니다. 그런 다음 내 파트너는 getBytes()를 사용하여 문자열의 암호를 해독합니다. 패딩 암호화와 암호 해독 할 때 입력 길이는 16의 배수 여야합니다 :자바 암호화/암호 해독 때문에 패딩 때문에 작동하지 않습니다
public static String decrypter(final String donnees) throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
return new String(cipher.doFinal(donnees.getBytes()));
}
내 문제는 내가 해독하려고 할 때이 오류가 있다는 것입니다 : 여기
는 복호화 방법입니다.바이트를 직접 디코드하면 정상적으로 작동합니다. string.getBytes()를 패딩이 느슨하지 않게하려면 어떻게해야합니까? 아니면 다른 솔루션?
나는 암호 해독을 변경할 수 없으며 파트너에게 전송 된 바이트가 아니라 문자열에 대해서도 마찬가지입니다.
바이트를 String처럼 변환 할 수는 없습니다. 적어도 8 비트 인코딩을 사용하거나 Base64와 같은 것을 사용하는 것이 좋습니다. – Kayaman
https://stackoverflow.com/questions/1536054/how-to-convert-byte-array-to-string-and-vice-versa – Oleg
두 분 모두 덕분에 문제가 해결되었습니다. 나는 바이트가 어떻게 작동하는지에 대해 꽤 잘못된 이해를했다. –