创建一个只能由我的程序使用的文件.我如何将它与其他程序区别开来';文件

本文关键字:程序 文件 其他 区别 一个 我的 创建 | 更新日期: 2023-09-27 18:29:50

我使用File.WriteAllBytes()创建文件。传递给File.WriteAllBytes()的Byte[]由我自己的算法加密。你需要文件加密时使用的密码(程序的用户知道密码)来解密它。但当我的程序使用File.ReadAllBytes()打开一些文件时,有三种情况:

  1. 正在打开的文件是我程序的文件,用户知道打开它的密码
  2. 正在打开的文件是我程序的文件,但用户不知道打开它的密码
  3. 正在打开的文件不是我程序的文件

第一个很容易处理。第二个和第三个对我的程序来说是一样的,因为我的程序不知道某个随机文件的加密字节[]和字节[]之间的区别。

我该如何区分这些情况?我想在将字节[]传递给File.WriteAllBytes()之前,在字节[]的末尾或开头添加一些字节序列。这样安全吗?现代程序的文件与其他文件有何不同?

创建一个只能由我的程序使用的文件.我如何将它与其他程序区别开来';文件

您可以在加密之前为文件提供一些结构,并在解密后检查该结构是否存在。如果结构不在那里,它就不是你的文件。

例如,您可以计算一个校验和,并将其存储在"有效负载"数据块之前的前几个字节中。将支票和文件的其余部分一起加密。

解密时,获取有效负载内容,并再次计算其校验和。将存储的结果与计算的结果进行比较,看看两者是否匹配。如果它们不匹配,那就不是你的文件。如果他们真的匹配,很有可能是你的文件。

这不是唯一的方法-结构可以是你想要的任何东西,从在特定的地方放置一个特殊的字节序列到为你的内容使用一个特定的严格格式(例如XML),然后在解密后验证这个格式。

[文件]是用我自己的算法加密的。

在默默无闻的情况下要非常小心安全性:制定一种加密安全的算法是一项极其艰巨的任务。

许多多文件格式在文件前面使用"幻数"来确定其类型。使用第一个。。。4字节,编写一个自定义序列,然后在加载文件时读取。