사람이이 점진적으로 고정 된 크기의 연속 체인을 채우기 위해 javax.crypto.Cipher에 클래스를 사용하는 것이 가능할 수 있는지 알고 있나요 임의의 양의 암호화 된 데이터가있는 ByteBuffers (풀링 된 버퍼)? 다른 중개 버퍼 배열을 채우지 않고 &을 할당하지 않으면, 즉. 나의 특별한 경우에 대한 암호화는 CBC 모드에서 AES입니다.출력 유연성, 다시 : 고정 된 크기의 ByteBuffer의이
나는 CharsetEncoder의 encode (CharBuffer 입력, ByteBuffer 출력, 부울 endOfInput) 메서드와 비슷한 것을 기대했는데, 주어진 제한값을 작성하고 출력 사이를 전환하는 기능을 포함하여 출력 작성에 대한 충분한 양의 제어가 가능했다. 필요에 따라 버퍼. 액면
는이 암호의 업데이트 (ByteBuffer를 입력, ByteBuffer를 출력) 입력의 제한이 종래 예 전화로 설정되어 방법을 사용하여 달성 될 수있는 것으로 생각된다. 출력 버퍼의 용량 초과를 피하십시오. 비록 API 문서를 올바르게 이해하고 있다면 Cipher 구현은이 메서드 호출 사이에 암호화 된 데이터를 버퍼링 할 수 있으므로 update() 또는 doFinal()을 한 번 호출하면 ByteBuffer가 더 큰 용량으로 출력해야 할 수 있습니다. 풀에서 고정 크기 버퍼에서 사용할 수 있습니다. 이 경우, 두 방법 용 문서에있어서
output.remaining 경우() 버퍼가 결과를 보유하기에 충분하다하는 ShortBufferException가 발생된다. 이 경우 큰 출력 버퍼로이 호출을 반복하십시오. getOutputSize를 사용하여 출력 버퍼의 크기를 결정하십시오.
이 문제를 해결할 수있는 방법이 있는지 아는 사람이 있습니까? 아마도 update() 호출간에 암호화 된 데이터를 플러시하여 과도한 버퍼 누적을 방지하는 몇 가지 방법이있을 수 있습니다. 나는 아직 CipherOutputStream을 시도하는 길을 걷지 않았다. 다시 한 번 중요한 목표는 중개 바이트 배열을 할당/채우지 않고 고정 된 크기의 ByteBuffers 시리즈에 암호화 된 데이터를 직접 채우는 것입니다.
아마도이 코드는 누군가를 도울 것입니다. http://www.itcsolutions.eu/wp-content/uploads/2011/08/BouncyCastleProvider_AES_CBC.java.txt – ed22