如何编写包含签名的.RSA文件(使用java)

如何编写包含签名的.RSA文件(使用java),java,openssl,rsa,digital-signature,file-format,Java,Openssl,Rsa,Digital Signature,File Format,我的任务: 我有一个编写文本文件的Java应用程序。 应用程序应使用RSA/SHA1对这些文件进行签名,以确保在传输期间或之后不会更改这些文件 我的第一个想法是在文本文件的末尾附加一个“RSA签名块”。但是,我没有找到关于如何格式化此块的信息,以便能够使用标准工具(OpenSSL?)验证文件 在网上搜索了几个小时后,我的印象是,标准是编写一个附加了.rsa扩展名的文件。(假设我们有一个Order123.txt,我们生成一个文件“Order123.txt.rsa”) 但是,我没有找到关于这些文件格

我的任务:

我有一个编写文本文件的Java应用程序。 应用程序应使用RSA/SHA1对这些文件进行签名,以确保在传输期间或之后不会更改这些文件

我的第一个想法是在文本文件的末尾附加一个“RSA签名块”。但是,我没有找到关于如何格式化此块的信息,以便能够使用标准工具(OpenSSL?)验证文件

在网上搜索了几个小时后,我的印象是,标准是编写一个附加了.rsa扩展名的文件。(假设我们有一个Order123.txt,我们生成一个文件“Order123.txt.rsa”) 但是,我没有找到关于这些文件格式的信息

我唯一发现的是有几个链接,其中有.rsa文件,可以用openssl打开,例如:

此外,还讨论了“META-INF/*.RSA”文件:

数字签名是.SF签名文件的签名版本。 这些是不打算由人类解释的二进制文件

数字签名文件与.SF文件具有相同的文件名,但 不同的扩展。扩展名因设备类型而异 数字签名

.RSA(PKCS7签名,SHA-256+RSA)

所以它似乎是一种二进制格式

有人能解释一下RSA文件的格式吗? 也许如何更好地用Java编写这种格式? (假设公钥/私钥在密钥库中)

这些文件是PKCS#7格式的签名文件。非常常见而且几乎所有的S/Mime工具链都可以创建这些。例如,见

请注意,这可以用于任意文件

弹跳城堡, 下面是一些例子

一个更有限的版本,不需要额外的杂项:可能是有用的


Dw.

以下命令可能有助于查看签名文件:

unzip -p {file}.jar META-INF/{signer}.RSA | \
openssl pkcs7 -text -print_certs -inform DER

这个
openssl
命令似乎只输出有关签名密钥的信息,而不是签名本身。