gpt4 book ai didi

java - Linux 如何将文件识别为某种文件类型,以及如何以编程方式更改它?

转载 作者:IT王子 更新时间:2023-10-29 01:10:34 27 4
gpt4 key购买 nike

我正在用 java 编写一个程序,它读取一个文件的输入流,通过根据密码改变字节数来加密它,并创建一个新的加密文件。

例如:
我创建了一个包含以下文字的测试文件:
这是一个测试,看看加密器项目是否有效。
当我读取 java 中的字节时,我得到:
[84, 104, 105, 115, 32, 105, 115, 32, 97, 32, 116, 101, 115, 116, 32, 116, 111, 32, 115, 101, 101, 32, 105, 102, 32, 116, 104, 101, 32, 101, 110, 99, 114, 121, 112, 116, 101, 114, 32, 112, 114, 111, 106, 101, 99, 116, 32, 119, 111, 114, 107, 115, 46, 10]
然后我取每个字节的值,减去密码的 unicode 值,得到它的绝对值。然后我将其写入文件。

我正在尝试使用不同的算法来加密它,并开始在测试文本文件上对其进行测试。我使用的是 Linux,所以没有文件扩展名(例如 .txt、.pdf 等...)我注意到在加密几次后,计算机不再将其识别为文本文件,而是,作为图像文件! (这意味着当您单击它时,默认情况下,它会尝试在图像编辑器中打开文件)

所以这是我的问题:

1。是什么导致计算机将文件识别为某种文件类型?

  • 我猜它与它在文件某处查看的某些字节有关,但除此之外,我迷路了。

2。此信息存储在文件中的什么位置?

  • 我希望即使在加密后也能使文件保持相同的文件类型,所以我在想,例如,如果文件类型信息在前 10 个字节中,我会加密所有内容在那之后,但例如保留前 10 个字节。

3。文件类型信息是否标准?

  • 这些字节是否具有跨所有平台的标准含义(即 pdf 文件是 pdf 文件,无论您在什么计算机上使用它。是因为 .pdf 扩展名,或者是因为文件中某处的字节。)

4。假设文件类型由于文件中的字节而被识别,我该如何更改文件类型?

  • 我在哪里可以找到文件中字节的含义列表?

最佳答案

在传统的 UNIX 系统上,仅通过查找文件中出现的特定字节模式来识别文件。

file 命令使用了一个magic 配置文件(通常是/etc/magic,或者/usr/share/file/magic),其中包含定义这些字节模式的规则。

就是这样 - 没有特殊的额外元数据 - 都是通过分析内容完成的。

关于java - Linux 如何将文件识别为某种文件类型,以及如何以编程方式更改它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10131631/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com