计算AES加密/解密的百分比

本文关键字:百分比 解密 AES 加密 计算 | 更新日期: 2023-09-27 18:03:20

我试图加密/解密使用AES 256位的文件与我从这里得到的代码。我使用的完整代码可以在这里看到。我想知道如何在while循环中计算加密/解密完成的百分比,因为它写入文件。例如加密:

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?
}

计算AES加密/解密的百分比

您可以按如下方式计算完成百分比:

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

如何显示它取决于你。你可以更新一个窗体控件(你可能需要使用调用,如果你的cypto运行在一个工作线程)或引发一个自定义事件(例如ProgressChanged),并在你的UI线程消费它。

我能够使它同时使用加密和解密。对于加密,我使用:

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

正如John Wu所说。对于解密,我使用:

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

之所以有效,是因为它将Position(x100)除以加密文件的总长度,而不是fsOut.Length;它只返回写入新解密文件的数据。