File 可执行文件中的数据解密?

File 可执行文件中的数据解密?,file,encryption,cryptography,executable,File,Encryption,Cryptography,Executable,我想了解一个可执行文件从加密文件中解密数据的过程,它在何时何地发生。例如,在Createfile或Readfile调用过程中,能否在程序外部处理解密?还是必须在将文件读入内存后进行解密?一般来说,文件系统不提供单独的文件加密/解密例程。一些系统可能提供密钥存储,然后应用程序可以访问这些密钥存储。如果使用这些密钥存储中的密钥进行加密,则密钥/加密例程可能会受到系统的额外保护。不过,在读取/写入文件时,不会直接执行加密例程 通常,文件加密/解密是以零碎的方式执行的。因此,大多数加密库都提供了“upd

我想了解一个可执行文件从加密文件中解密数据的过程,它在何时何地发生。例如,在Createfile或Readfile调用过程中,能否在程序外部处理解密?还是必须在将文件读入内存后进行解密?

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

通常,文件加密/解密是以零碎的方式执行的。因此,大多数加密库都提供了“update/final”加密方法(例如,CBC需要填充/取消添加,因此“final”方法必须执行额外的任务)。因此,您不需要将所有文件加载到内存中,只需将其读入缓冲区并对缓冲区中的字节进行加密即可

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

一种经常被忽略的方法是选择内存映射文件。在这种情况下,看起来您几乎可以直接加密/解密,尽管最终必须先将文件传输到内存,然后才能对其进行加密



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

将文件读入内存后。