一、數(shù)字簽名怎么簽
(一)Java簽名步驟
1、將applet的class文件打包成*.jar(可以在命令行中輸入jar查看幫助)。
2、首先我們要生成一個(gè)keystore,否則在簽名的時(shí)候報(bào)如下錯(cuò)誤:
jarsigner錯(cuò)誤:java.lang.RuntimeException:密鑰庫(kù)裝入:C:Documents and Settingsij2ee.keystore(系統(tǒng)找不到指定的文件。). (這邊的ij2ee是當(dāng)前系統(tǒng)用戶名)
生成keystore的語(yǔ)句:keytool-genkey-alias 別名你可以自己寫-keyalg RSA-keystore.keystore
下面是會(huì)出現(xiàn)的數(shù)字簽名的一些步驟操作:
輸入keystore密碼:
再次輸入新密碼:
您的名字與姓氏是什么?
[Unknown]:ij2ee
您的組織單位名稱是什么?
[Unknown]:mtk
您的組織名稱是什么?
[Unknown]:mtk
您所在的城市或區(qū)域名稱是什么?
[Unknown]:suzhou
您所在的州或省份名稱是什么?
[Unknown]:jiangsu
該單位的兩字母國(guó)家代碼是什么
[Unknown]:cn
CN=ij2ee,OU=mtk,O=mtk,L=suzhou,ST=jiangsu,C=cn正確嗎?
[否]:y
輸入的主密碼
(如果和keystore密碼相同,按回車):
這時(shí)候會(huì)在jdk的bin目錄下生成.keystore。把這個(gè).keystore文件移動(dòng)到C:Documents and Settings當(dāng)前系統(tǒng)用戶的目錄下面。
3、創(chuàng)建一個(gè)數(shù)字證書
在命令行中輸入如下指令,peakCA和peakCALib自己起名字好了,3650是有效天數(shù),就是10年左右,在創(chuàng)建證書的的時(shí)候,需要填寫證書的一些信息和證書對(duì)應(yīng)的私鑰密碼。
keytool -genkey -alias peakCA -keyalg RSA -keysize 1024 -keystore peakCALib -validity 3650
4、將證書導(dǎo)出到證書文件中
在命令行中輸入如下指令,peakCA和peakCALib任意起名字,******是輸入的密碼。
keytool -export -alias peakCA -file peakCA.cer-keystore peakCALib-storepass******-rfc
5、授權(quán)jar文件,在命令行中輸入如下指令
jarsigner -keystore peakCALib myapplet.jar peakCA
(二)office簽名步驟
1、要保護(hù)文檔內(nèi)容的真實(shí)性,可以添加不可見(jiàn)的數(shù)字簽名。已簽名文檔的底部有“簽名”按鈕。
2、單擊“文件”選項(xiàng)卡。
3、單擊“信息”。
4、在“權(quán)限”下,單擊“保護(hù)文檔”、“保護(hù)工作簿”或“保護(hù)演示文稿”。
5、單擊“添加數(shù)字簽名”。
6、閱讀Word、Excel或PowerPoint中顯示的消息,然后單擊“確定”。
7、在“簽名”對(duì)話框中的“簽署此文檔的目的”框中,鍵入目的。
8、單擊“簽名”。
9、在對(duì)文件進(jìn)行數(shù)字簽名后,將出現(xiàn)“簽名”按鈕,并且文件會(huì)變?yōu)橹蛔x以防止修改。
二、數(shù)字簽名應(yīng)用例子
假如Alice向Bob傳送數(shù)字信息,為了保證信息傳送的保密性、真實(shí)性、完整性和不可否認(rèn)性,需要對(duì)傳送的信息進(jìn)行數(shù)字加密和簽名,其傳送過(guò)程為:
Alice準(zhǔn)備好要傳送的數(shù)字信息(明文);
Alice對(duì)數(shù)字信息進(jìn)行哈希運(yùn)算,得到一個(gè)信息摘要;
Alice用自己的私鑰對(duì)信息摘要進(jìn)行加密得到Alice的數(shù)字簽名,并將其附在數(shù)字信息上;
Alice隨機(jī)產(chǎn)生一個(gè)加密密鑰,并用此密碼對(duì)要發(fā)送的信息進(jìn)行加密,形成密文;
Alice用Bob的公鑰對(duì)剛才隨機(jī)產(chǎn)生的加密密鑰進(jìn)行加密,將加密后的DES密鑰連同密文一起傳送給Bob;
Bob收到Alice傳送來(lái)的密文和加密過(guò)的DES密鑰,先用自己的私鑰對(duì)加密的DES密鑰進(jìn)行解密,得到Alice隨機(jī)產(chǎn)生的加密密鑰;
Bob然后用隨機(jī)密鑰對(duì)收到的密文進(jìn)行解密,得到明文的數(shù)字信息,然后將隨機(jī)密鑰拋棄;
Bob用Alice的公鑰對(duì)Alice的數(shù)字簽名進(jìn)行解密,得到信息摘要;
Bob用相同的哈希算法對(duì)收到的明文再進(jìn)行一次哈希運(yùn)算,得到一個(gè)新的信息摘要;
Bob將收到的信息摘要和新產(chǎn)生的信息摘要進(jìn)行比較,如果一致,說(shuō)明收到的信息沒(méi)有被修改過(guò)。