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