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