将隐藏信息附加到c#中的txt文件

时间:2016-03-03 14:12:17

标签: c#

我正在构建一个简单的加密应用程序,它能够加密和解密任何给定的txt文件中的文本。解密过程应确定在文本上使用了哪种加密类型,并使用该类型解密指定的txt文件文本。 我的问题是,有没有办法将隐藏的信息附加到txt文件,我将能够在解密过程中读取。 编辑: 隐藏的意思是用户无法以任何方式看到它。它也不应该反映在加密文本上。

1 个答案:

答案 0 :(得分:0)

  

有没有办法将隐藏信息附加到txt文件,我将能够在解密过程中读取。编辑:隐藏的意思是用户无法以任何方式看到它

不,这是不可能的。根据定义,文本文件是一个简单的字节流,表示某些文本的编码。用户可以访问所有字节,通过他们用来查看文件的任何程序进行解码(这可能像十六进制转储实用程序一样简单。)

也就是说,一些文本编码(包括Unicode)包括本身不显示的字符,但通常用于影响渲染,文本布局,字符组成等。根据您的具体目标,我认为您可以嵌入在文件的文本中策略性地使用字符,使得它们可以被您的算法检测到,并且可以被解释为恢复文件中的信息。

但如果您的程序可以获取数据,那么其他人也可以。例如,设计用于显示通常不显示的字符的任何程序都将显示数据。同样,一个只显示文件字节的程序。在这种情况下,用户可能会注意到无关的字符数据,并确定该文件除了文本之外还包含数据,这些文本通常是传统文本查看工具加载文件时唯一可见的内容。

我想值得指出的是,某些文件系统(包括NTFS)支持文件的多个数据流。在此类环境中,您可以将非文本数据放在备用流中。传统工具不会显示数据。但是a)备用流仍然对任何知道寻找它的用户可见,并且b)当某些文件的数据被移动到其他地方(例如通过网络复制)时,这种流实际上永远不会被保留。它是一个非常脆弱的解决方案,很容易导致加密文件完全无法恢复。

  

它也不应该反映在加密文本上。

我不知道你在这里的意思。 "反映"如何?