【问题标题】:Data Decryption In An Executable?可执行文件中的数据解密?
【发布时间】:2020-11-19 13:25:37
【问题描述】:

我想了解可执行文件从加密文件中解密数据的时间和地点的过程。一个例子是可以在 Createfile 或 Readfile 调用期间在程序之外处理解密吗?还是必须在将文件读入内存后进行解密?

【问题讨论】:

  • 将文件读入内存后。

标签: file encryption cryptography executable


【解决方案1】:

通常文件系统不提供用于加密/解密文件的单独例程。一些系统可能会提供密钥库,然后应用程序可以访问这些密钥库。如果您使用这些密钥存储中的密钥进行加密,则密钥/加密例程可能会受到系统的额外保护。不过,在读取/写入文件时,不会直接执行加密例程。

通常文件加密/解密是以零碎的方式执行的。正因为如此,大多数密码库都提供了“更新/最终”加密方法(例如,CBC 需要填充/取消填充,因此“最终”方法确实必须执行额外的任务)。所以你不需要将所有文件加载到内存中,你只需将它读入缓冲区并加密缓冲区中的字节即可。

为了使它更容易,许多库都提供了用于加密/解密的流。在这种情况下,流负责缓冲。因此,您打开一个文件流,然后使用“过滤器”流将文件流用作父流来加密数据。一般来说,我更喜欢加密的输出流和解密的输入流。

一个经常被忽视的方法是内存映射一个文件的选项。在这种情况下,您几乎可以直接加密/解密,尽管最后必须先将文件传输到内存才能加密。


当然还有BitLocker等文件系统加密/解密系统。然而,这些通常对使用这些加密文件的应用程序是透明的:对于应用程序来说,它们看起来只是普通文件,并且密钥管理由系统执行,而不是应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2013-06-11
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多