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