Я работаю над шифрованием байтового массива при загрузке файла. Однако, поскольку используется сеть, данные заполняются динамически, даже если размер буферного массива фиксирован на уровне 4096. При повторной дешифровке файла мы не используем сеть, поэтому постоянно поступает 4096 байт. Шифрование и дешифрование проблемы возникают в этой области.
Я хочу знать, как размер байтов, поступающих в буфер во время загрузки, всегда можно заполнить 4096.
Спасибо.




Покажите код, в который вы загружаете файл.
Один из способов реализовать это - выполнить цикл при чтении данных из сети и продолжать проталкивать полученные байты в буфер до его заполнения (например, 4096 для вашего случая), а затем обрабатывать и очищать буфер.
Возможно, вам также придется обрабатывать случаи, когда вы получаете больше данных, которые вы можете поместить в буфер ...
мои два цента...
What I want to know is how the size of the bytes coming into the buffer at the time of downloading can always be filled with 4096.
Не может. TCP API может бесплатно предоставить вам все, что угодно, от 1 байта до размера вашего буфера.
Вам необходимо исправить ошибки в вашем коде шифрования и дешифрования. Проблема XY.
Вот решение, которое у меня есть. Вы можете получить размер буфера, какой захотите. Применяйте его, когда вам нужно.
private boolean readFully(InputStream is, byte[] data, int off, int length) {
int read;
while (length > 0) {
read = is.read(data, off, length);
if (read <=0){
return false;
}
length -= read;
off += read;
}
return true;
}