使用JAVA加入原始文件的签名

时间:2014-01-21 16:13:50

标签: java digital-signature

我需要使用java将原始文件加入签名数据。

Signature signer = Signature.getInstance(signatureAlgorithm, provider);
signer.initSign(key);
signer.update(input);
byte[] sign = signer.sign();

我有一个png文件(f),我做到了:

byte[] input = converterFileIntoByteArray(f);
Signature signer = Signature.getInstance(signatureAlgorithm, provider);
signer.initSign(key);
signer.update(input);
byte[] sign = signer.sign();

我不想发送给接收者两个文件(我的png和你的签名 - 来自签名的代表文件)。我想在单个文件中加入byte []输入和byte []符号。但是我需要该文件仍然有效并且可以被程序读取。例如,如果该文件是txt,那么,这个结果文件可以被Note Pad读取,对于其他文件也是如此,如pdf,doc,jpeg。

有人帮助我吗?

1 个答案:

答案 0 :(得分:2)

通常,您不能将额外数据添加到二进制文件中,并期望程序只是神奇地忽略额外数据。二进制文件(例如.doc)应该采用特定格式,并包含允许程序验证它们是否已损坏的数据。

对于某些选定的文件格式,可能,但如果要加入文件及其签名,则必须将它们放在某种容器中,例如.zip文件。< / p>

NTFS文件系统允许文件具有多个“数据流”,您可以将签名放在备用流中,但这仅适用于Windows。通常没有可移植的方式来完成你的要求。