2015-11-06 124 views
0

如何操作文件以便更改MD5/SHA1簽名。我想以通用的方式做到這一點,而不知道文件類型,exe,pdf,jpg等。是否可以這樣做,而不是損壞文件?如何更改文件簽名

我不是試圖構建一個新的已知簽名只是從現有的簽名改變。我不在乎新簽名是什麼。

我一直在考慮在文件末尾添加一個新的空字節。會打破任何格式?

回答

1

二進制格式以位爲單位指定格式。所以它取決於每一位的格式。換句話說:如果您希望文件保持有效,則無法在不理解格式的情況下更改文件。添加一個零字節可能適用於很多格式,因爲它可能會被忽略,但這不是給定的。

或者,您可以查找現有格式的位置並將它們存儲在表格中。您通常可以在Posix系統(Linux,CygWin ...)中使用file命令查找格式。

0

我同意@Maarten。它取決於文件格式,因此您需要每種格式的規則圖。 我會嘗試通過在文件末尾添加一個零字節。它可能適用於大多數常用文件。

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);