如何更改文件签名

时间:2015-11-06 21:02:13

标签: hash digital-signature signing

如何操作文件以便更改MD5 / SHA1签名。我想以通用的方式做,不知道文件类型,exe,pdf,jpg等。是否可能这样做而不会破坏文件?

我没有尝试构建一个新的已知签名,只是改变现有签名。我不在乎新签名是什么。

我一直在考虑在文件末尾添加一个新的空字节。这会破坏任何格式吗?

2 个答案:

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