如何操作文件以便更改MD5 / SHA1签名。我想以通用的方式做,不知道文件类型,exe,pdf,jpg等。是否可能这样做而不会破坏文件?
我没有尝试构建一个新的已知签名,只是改变现有签名。我不在乎新签名是什么。
我一直在考虑在文件末尾添加一个新的空字节。这会破坏任何格式吗?
答案 0 :(得分:1)
二进制格式以位为单位指定格式。所以它取决于每个位的含义。换句话说:如果您希望文件保持有效,则无法在不理解格式的情况下更改文件。添加零字节可能适用于许多格式,因为它可能会被忽略,但这不是给定的。
或者,您可以查找现有格式的位置并将其存储在表格中。您通常可以使用Posix系统中的file
命令查找格式(Linux,CygWin ...)。
答案 1 :(得分:0)
我同意@Maarten。它取决于文件格式,因此您需要每种格式的规则映射。 我会尝试在文件末尾添加一个ZERO字节。它可能适用于大多数常见文件。
RandomAccessFile f = new RandomAccessFile("filePath", "r");
byte[] b = new byte[(int)f.length() + 1];
f.read(b);
FileOutputStream fos = new FileOutputStream("newFilePath");
fos.write(b);