一、数字签名怎么签
(一)Java签名步骤
1、将applet的class文件打包成*.jar(可以在命令行中输入jar查看帮助)。
2、首先我们要生成一个keystore,否则在签名的时候报如下错误:
jarsigner错误:java.lang.RuntimeException:密钥库装入:C:Documents and Settingsij2ee.keystore(系统找不到指定的文件。). (这边的ij2ee是当前系统用户名)
生成keystore的语句:keytool-genkey-alias 别名你可以自己写-keyalg RSA-keystore.keystore
下面是会出现的数字签名的一些步骤操作:
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]:ij2ee
您的组织单位名称是什么?
[Unknown]:mtk
您的组织名称是什么?
[Unknown]:mtk
您所在的城市或区域名称是什么?
[Unknown]:suzhou
您所在的州或省份名称是什么?
[Unknown]:jiangsu
该单位的两字母国家代码是什么
[Unknown]:cn
CN=ij2ee,OU=mtk,O=mtk,L=suzhou,ST=jiangsu,C=cn正确吗?
[否]:y
输入的主密码
(如果和keystore密码相同,按回车):
这时候会在jdk的bin目录下生成.keystore。把这个.keystore文件移动到C:Documents and Settings当前系统用户的目录下面。
3、创建一个数字证书
在命令行中输入如下指令,peakCA和peakCALib自己起名字好了,3650是有效天数,就是10年左右,在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码。
keytool -genkey -alias peakCA -keyalg RSA -keysize 1024 -keystore peakCALib -validity 3650
4、将证书导出到证书文件中
在命令行中输入如下指令,peakCA和peakCALib任意起名字,******是输入的密码。
keytool -export -alias peakCA -file peakCA.cer-keystore peakCALib-storepass******-rfc
5、授权jar文件,在命令行中输入如下指令
jarsigner -keystore peakCALib myapplet.jar peakCA
(二)office签名步骤
1、要保护文档内容的真实性,可以添加不可见的数字签名。已签名文档的底部有“签名”按钮。
2、单击“文件”选项卡。
3、单击“信息”。
4、在“权限”下,单击“保护文档”、“保护工作簿”或“保护演示文稿”。
5、单击“添加数字签名”。
6、阅读Word、Excel或PowerPoint中显示的消息,然后单击“确定”。
7、在“签名”对话框中的“签署此文档的目的”框中,键入目的。
8、单击“签名”。
9、在对文件进行数字签名后,将出现“签名”按钮,并且文件会变为只读以防止修改。
二、数字签名应用例子
假如Alice向Bob传送数字信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为:
Alice准备好要传送的数字信息(明文);
Alice对数字信息进行哈希运算,得到一个信息摘要;
Alice用自己的私钥对信息摘要进行加密得到Alice的数字签名,并将其附在数字信息上;
Alice随机产生一个加密密钥,并用此密码对要发送的信息进行加密,形成密文;
Alice用Bob的公钥对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给Bob;
Bob收到Alice传送来的密文和加密过的DES密钥,先用自己的私钥对加密的DES密钥进行解密,得到Alice随机产生的加密密钥;
Bob然后用随机密钥对收到的密文进行解密,得到明文的数字信息,然后将随机密钥抛弃;
Bob用Alice的公钥对Alice的数字签名进行解密,得到信息摘要;
Bob用相同的哈希算法对收到的明文再进行一次哈希运算,得到一个新的信息摘要;
Bob将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。