说明:需要签名的文件须为压缩类型文件,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,文件内容如下图
文件中META-INF的内容如下。
使用jdk的keytool命令工具生成名为 hochoy.store的密钥库,别名为hochoy.
操作命令和相关步骤如下:
> keytool -genkey -keystore hochoy.store -alias hochoy
密码:123456 (根据需要自己输入)
导出hochoy.cer数字证书
> keytool -export -keystore hochoy.store -alias hochoy -file hochoy.cer
密码:123456 (根据需要自己输入)
对example-1.0-SNAPSHOT.war文件进行签名
jarsigner -keystore hochoy.store example-1.0-SNAPSHOT.war hochoy
签名之后META-INF的文件目录结构:
对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
在签名后的文件没有被修改的情况下验证得到如下信息:
若签名后的文件被修改过,则验证得到如下信息,表明文件被修改过
说明:
本文仅对war包进行了签名,经验证jar、zip包的签名同样可用,方法同上,可自行验证。
相关文件可下载https://download.csdn.net/download/hochoy/10964567