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