文件数字签名(zip、jar等)

说明:需要签名的文件须为压缩类型文件,jar,zip,rar等,简单的文本文件无法进行签名

 

关于数字签名等的理论和说明,网上文档较多,本文不做赘述,另附两篇较通俗易懂的文章供参阅:

https://www.sohu.com/a/217347496_100008678

http://www.youdzone.com/signature.html

本文旨在使用jdk命令工具对文件进行签名和验证,以供参考。

代码实现:https://www.cnblogs.com/cymiao/p/8398979.html

 

准备需要签名的文件:example-1.0-SNAPSHOT.war,文件内容如下图

文件数字签名(zip、jar等)

文件中META-INF的内容如下。

文件数字签名(zip、jar等)

使用jdk的keytool命令工具生成名为 hochoy.store的**库,别名为hochoy.

操作命令和相关步骤如下:

> keytool -genkey -keystore hochoy.store -alias hochoy

密码:123456 (根据需要自己输入)

文件数字签名(zip、jar等)

 

 

导出hochoy.cer数字证书

>  keytool -export -keystore hochoy.store -alias hochoy -file hochoy.cer

密码:123456 (根据需要自己输入)

文件数字签名(zip、jar等)

 

对example-1.0-SNAPSHOT.war文件进行签名

jarsigner -keystore hochoy.store   example-1.0-SNAPSHOT.war  hochoy

文件数字签名(zip、jar等)

签名之后META-INF的文件目录结构:

文件数字签名(zip、jar等)

对jar文件签名之后,在原来jar包的内部的META-INF目录下回生成HOCHOY.DSA 和HOCHOY.SF 两个文件用以验证以及会对其中MENIFEST.MF文件进行修改

若签名的非jar文件或原文件中不含META-INF目录,签名之后会生成该目录,并在该目录下生成HOCHOY.DSA,HOCHOY.SF,MENIFEST.MF三个文件

 

验证

> jarsigner -verify   example-1.0-SNAPSHOT.war

在签名后的文件没有被修改的情况下验证得到如下信息:

文件数字签名(zip、jar等)

若签名后的文件被修改过,则验证得到如下信息,表明文件被修改过

文件数字签名(zip、jar等)

 

说明:

本文仅对war包进行了签名,经验证jar、zip包的签名同样可用,方法同上,可自行验证。

相关文件可下载https://download.****.net/download/hochoy/10964567