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