2016-08-19 2 views
1

Я пытаюсь зашифровать/дешифровать файл с использованием AES 256 бит с кодом, который я получил от here. Полный код, который я использую, показан here. Мне было интересно, как я мог вычислить процентное соотношение как шифрования, так и дешифрования в цикле while при записи в файл. Например, в шифровании:C# Расчет Процент шифрования/дешифрования AES

while ((read = fsIn.Read(buffer, 0, buffer.Length)) > 0) 
{ 
    cs.Write(buffer, 0, read); 
    //int percentage = Calculate percentage done here? 
} 

И в расшифровке:

while ((read = cs.Read(buffer, 0, buffer.Length)) > 0) 
{ 
    fsOut.Write(buffer, 0, read); 
    //int percentage = Calculate percentage done here? 
} 
+0

Извините, мой плохой. Спасибо, что исправили его. –

ответ

1

Мне удалось заставить его работать как с шифрованием, так и с расшифровкой. Для шифрования я использовал:

var percentComplete = (float)fsIn.Position * 100/fsIn.Length; 

Как John Wu указано. Для расшифровки, я использовал:

var percentComplete = (float)fsOut.Position * 100/fsCrypt.Length; 

Это работает, потому что он разделяет позицию (X100) по общей длине зашифрованного файла, в отличие от fsOut.Length; который возвращает только данные, которые были записаны в новый расшифрованный файл.

1

Вы можете вычислить процент выполнения следующим образом:

var percentComplete = (float)fsIn.Position * 100/fsIn.Length; 

Как вы показываете это до вас. Вы можете обновить элемент управления формой (возможно, вам нужно будет использовать invoke, если ваш cypto работает на рабочем потоке) или поднимите custom event (например, ProgressChanged) и уничтожьте его в потоке пользовательского интерфейса.

+0

Спасибо, я использовал это в своем окончательном ответе, где я также расскажу, как показать процент для дешифрования файлов :) –

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