2014-01-27 21 views
0

Я пишу простую программу, чтобы взять файл, зашифровать его с помощью AES и сохранить вывод в отдельном файле с помощью Java. Java - это новый язык для меня, но он похож на C# в некотором роде, и я некоторое время использовал C#, поэтому обучение проходило относительно плавно.Прогресс шифрования в Java

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

У меня была идея, и я хотел получить от нее информацию, если нет значительно более простого способа сделать это. Моя идея состояла в том, чтобы до начала шифрования получить размер входного файла в байтах, а затем по таймеру найти количество байтов, которые в настоящее время находятся в выходном файле, чтобы определить процент завершения. Однако я задаюсь вопросом, смогу ли я открыть новый дескриптор файла в выходном файле, когда у меня будет открытый дескриптор в другом потоке Java. Мое решение возможно или есть более простой способ сделать это?

+0

какой пакет вы используете для AES? – user1428716

+0

Пока не решили. Если есть тот, который делает это проще, я буду использовать это. Я читал в javax.crypto.cipher, и это казалось многообещающим. – seanr8

ответ

0

Здесь должен быть подход -

strToEncrypt = содержимое файла (позволяет предположим, что) Вы должны использовать cipher.getOutputSize(strToEncrypt.getBytes().length)

получить оценку выходного файла. Теперь это сложно - и вы должны запустить несколько примеров кода, чтобы определить размер файла, когда записано некоторое количество байтов. Windows can give a different estimate of file size тогда как UNIX will give your the correct file size (in terms of byte length you get from this code)

Как только вы получите оценку размера массива байтов, вы можете использовать java.io.File, чтобы получить размер и рассчитать% от него.

0

Если вы знаете размер файла, используйте что-то наподобие CountingInputStream и вычислите процент, используя байты, прочитанные до сих пор с помощью getCount().

Смежные вопросы