一、數字簽名怎么簽
(一)Java簽名步驟
1、將applet的class文件打包成*.jar(可以(yi)在命令行(xing)中輸(shu)入jar查看幫助)。
2、首先我們(men)要生成(cheng)一個(ge)keystore,否則在簽名(ming)的時候報如(ru)下錯誤:
jarsigner錯誤:java.lang.RuntimeException:密鑰庫裝入:C:Documents and Settingsij2ee.keystore(系(xi)統(tong)(tong)找不到指定(ding)的(de)文件。). (這邊的(de)ij2ee是當前系(xi)統(tong)(tong)用戶名(ming))
生成(cheng)keystore的語句:keytool-genkey-alias 別(bie)名你可以(yi)自己(ji)寫-keyalg RSA-keystore.keystore
下面是會出現的(de)數(shu)字簽名的(de)一些步驟操作:
輸入keystore密(mi)碼:
再次(ci)輸入新(xin)密碼:
您的(de)名字與姓氏是什么(me)?
[Unknown]:ij2ee
您(nin)的組織(zhi)單位名稱是什么?
[Unknown]:mtk
您的組織名稱是什么(me)?
[Unknown]:mtk
您所在的城市或區域名稱是什么?
[Unknown]:suzhou
您所在(zai)的州或省份名稱(cheng)是什么?
[Unknown]:jiangsu
該單位的兩字母國家代碼(ma)是什么
[Unknown]:cn
CN=ij2ee,OU=mtk,O=mtk,L=suzhou,ST=jiangsu,C=cn正確嗎(ma)?
[否]:y
輸入的主密碼
(如果和(he)keystore密(mi)碼相同,按回車(che)):
這時候會在jdk的bin目錄下生(sheng)成.keystore。把這個(ge).keystore文件移(yi)動(dong)到C:Documents and Settings當前(qian)系統用(yong)戶的目錄下面。
3、創建(jian)一個(ge)數字證書
在命令行(xing)中(zhong)輸入如下指令,peakCA和(he)peakCALib自己起名字好了,3650是有效天數,就是10年左右,在創建證(zheng)(zheng)書的(de)(de)(de)的(de)(de)(de)時候,需要填寫證(zheng)(zheng)書的(de)(de)(de)一(yi)些(xie)信(xin)息和(he)證(zheng)(zheng)書對應的(de)(de)(de)私鑰(yao)密碼。
keytool -genkey -alias peakCA -keyalg RSA -keysize 1024 -keystore peakCALib -validity 3650
4、將證(zheng)書導出到證(zheng)書文件中
在命(ming)令(ling)行中輸(shu)入如下(xia)指令(ling),peakCA和peakCALib任意(yi)起名(ming)字(zi),******是輸(shu)入的(de)密碼。
keytool -export -alias peakCA -file peakCA.cer-keystore peakCALib-storepass******-rfc
5、授權jar文件(jian),在命(ming)令行中(zhong)輸入如下(xia)指令
jarsigner -keystore peakCALib myapplet.jar peakCA
(二)office簽名步驟
1、要保護文檔內(nei)容(rong)的真實(shi)性,可(ke)以添加不可(ke)見(jian)的數字簽名。已簽名文檔的底(di)部有“簽名”按鈕。
2、單擊“文件”選項(xiang)卡。
3、單擊“信息”。
4、在“權限”下,單擊“保(bao)護(hu)文檔(dang)”、“保(bao)護(hu)工作(zuo)簿”或“保(bao)護(hu)演示文稿”。
5、單(dan)擊(ji)“添(tian)加數字簽名”。
6、閱讀(du)Word、Excel或PowerPoint中顯示(shi)的(de)消(xiao)息,然后單擊(ji)“確定”。
7、在“簽名(ming)”對話框中(zhong)的“簽署此文檔的目(mu)的”框中(zhong),鍵入目(mu)的。
8、單擊“簽名”。
9、在對文件進行(xing)數字簽名(ming)后,將出現“簽名(ming)”按(an)鈕,并且文件會變為只讀以(yi)防止修改。
二、數字簽名應用例子
假如Alice向Bob傳(chuan)送(song)數字信(xin)息(xi),為(wei)(wei)了保證信(xin)息(xi)傳(chuan)送(song)的保密性(xing)、真實性(xing)、完整性(xing)和(he)不可否認(ren)性(xing),需要(yao)對(dui)傳(chuan)送(song)的信(xin)息(xi)進行數字加密和(he)簽名,其傳(chuan)送(song)過程為(wei)(wei):
Alice準備(bei)好要傳送的數字信息(明文);
Alice對數字(zi)信息進行(xing)哈希(xi)運算,得到一個(ge)信息摘要;
Alice用自己的私鑰對信息摘要進行加密(mi)得到(dao)Alice的數字簽名,并將其附(fu)在數字信息上(shang);
Alice隨機產生一個(ge)加密密鑰,并用此密碼對要發送的信息(xi)進行(xing)加密,形成密文;
Alice用Bob的公鑰對(dui)剛才隨機產生(sheng)的加密(mi)密(mi)鑰進行加密(mi),將加密(mi)后的DES密(mi)鑰連(lian)同密(mi)文一起傳送(song)給Bob;
Bob收到Alice傳送來的(de)(de)(de)密(mi)文和加密(mi)過(guo)的(de)(de)(de)DES密(mi)鑰(yao)(yao),先用自(zi)己的(de)(de)(de)私(si)鑰(yao)(yao)對加密(mi)的(de)(de)(de)DES密(mi)鑰(yao)(yao)進行解(jie)密(mi),得到Alice隨機產(chan)生的(de)(de)(de)加密(mi)密(mi)鑰(yao)(yao);
Bob然(ran)后用隨機密(mi)鑰對收到的密(mi)文進(jin)行解密(mi),得到明文的數字信(xin)息,然(ran)后將隨機密(mi)鑰拋棄;
Bob用Alice的公鑰對Alice的數字簽名進行解密,得(de)到信息摘要;
Bob用相(xiang)同的(de)哈(ha)(ha)希(xi)算法對收到的(de)明(ming)文再(zai)進行(xing)一(yi)次哈(ha)(ha)希(xi)運算,得到一(yi)個新(xin)的(de)信息摘要;
Bob將收到(dao)的信息(xi)摘(zhai)要(yao)和新產(chan)生的信息(xi)摘(zhai)要(yao)進行比較,如果一致,說明(ming)收到(dao)的信息(xi)沒有被修(xiu)改過。