java - 用JAVA将签名与原始文件连接起来

标签 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,那么该结果文件可以通过记事本读取,对于其他文件也同样有效,如pdf、doc、jpeg。

有人帮助我吗?

最佳答案

一般来说,您不能将额外的数据添加到二进制文件中并期望程序神奇地忽略这些额外的数据。二进制文件(例如.doc)应采用特定格式,并包含允许程序验证它们没有被损坏的数据。

对于某些选定的文件格式,这可能是可能的,但如果您想加入文件及其签名,则必须将两者放入某种容器中,例如 .zip 文件。

NTFS 文件系统允许文件拥有多个“数据流”,您可以将签名放在备用流中,但这仅适用于 Windows。没有普遍可移植的方法来完成您所要求的任务。

关于java - 用JAVA将签名与原始文件连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263419/

相关文章:

java - 使用 Java 泛型显式指定返回的集合类型和集合元素的类型

iOS - 显示带有签名的 PDF

python-3.x - 无法在 AWS Lambda Python 3 (Interactions_Endpoint_URL) 上验证机器人的 Discord 签名

java - RSA 签名性能

oracle - 在CentOS 6.3上安装和配置weblogic服务器

java - 有什么方法可以使用 Guava 获取 InputStream 的哈希码吗?

java - 通过 HTTPs 实现 IIS 背后的 JBoss Web 服务

java - 如何将电子邮件地址隐藏为 url 参数

java - 验证 JsonWebToken 签名

php - 如何在PHP中实现数字签名