我需要使用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,那么该结果文件可以通过记事本读取,对于其他文件也同样有效,如pdf、doc、jpeg。
有人帮助我吗?
最佳答案
一般来说,您不能将额外的数据添加到二进制文件中并期望程序神奇地忽略这些额外的数据。二进制文件(例如.doc
)应采用特定格式,并包含允许程序验证它们没有被损坏的数据。
对于某些选定的文件格式,这可能是可能的,但如果您想加入文件及其签名,则必须将两者放入某种容器中,例如 .zip
文件。
NTFS 文件系统允许文件拥有多个“数据流”,您可以将签名放在备用流中,但这仅适用于 Windows。没有普遍可移植的方法来完成您所要求的任务。
关于java - 用JAVA将签名与原始文件连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263419/