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