我在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命令使用魔术配置文件(通常是/ etc / magic,或/usr/share / file / magic),其中包含定义这些字节模式的规则.
就是这样 – 没有特别的额外元数据 – 这一切都是通过对内容的分析来完成的.
标签:java,linux,byte,file-type
来源: https://codeday.me/bug/20190530/1183736.html