訊息摘要是資料塊的數字指紋;
securerandom類產生的隨機數,遠比由random類產生的那些數字安全得多
公共密匙和私有密匙對有2個用途:乙個用來加密,乙個用來認證;
用於加密:別人發給你的訊息用公共密匙加密,那麼只有你有私有密匙對這個訊息進行解密;
用於認證:你用私有密匙對訊息進行簽名,其他人只有用你的公有密匙才能解密訊息,從而確認訊息是你發的訊息;
dsa演算法的過程有3個步驟:
1. 產生乙個密匙對;
2. 給訊息簽名;
3. 對訊息進行驗證;
證書的核心內容是:
。被認證身份的名字;
。被認證身份的公共密匙;
。對上列資訊用私有密匙進行簽名;// 這個私有密匙應該是認證機構的私有密匙,這個簽名動作的主體是認證機構
// 由此可見,認證機構負責生成證書,並發放證書給訊息接受者
// 所以整個過程有2級認證,證書認證(對應證書的公匙和私匙),資訊認證(對應資訊的公匙和私匙,資訊可以指**,資訊等。。。)
所以證書的意義是;
1. (訊息接受者)通過某種途徑得到認證機構的公共密匙;
2. 用這個公共密匙對證書進行解密,得到被認證身份的名字和公共密匙;
3. 傳送訊息者(即上面的被認證身份),用自己的私有密匙對要傳送的資訊進行簽名;簽名後傳送;
4. 接受訊息的人(同時也是擁有證書的人,用第2個步驟中得到的公共密匙對該訊息簽名驗證)
keytool -genkey -keystore alice.store -alias alice
keytool -export -keystore alice.store -alias alice -file alice.cert
keytool -printcert -file alice.cert
keytool 用來管理私鑰倉庫(keystore)和與之相關的x.509證書鏈(用以驗證與私鑰對應的公鑰),也可以用來管理其他信任實體。
keytool 將金鑰和證書儲存在乙個所謂的金鑰倉庫中。預設的金鑰倉庫實現將金鑰倉庫實現為乙個檔案。它用口令來保護私鑰。(口令即密碼,可設定)
在金鑰倉庫中有兩種不同型別的項:金鑰項- 可信任的證書項 -
如果私匙是「dsa」型別,那麼預設的簽名演算法是"sha1withdsa",
如果私匙是「rsa」型別,那麼預設的簽名演算法是「md5withrsa」,
-》從上列描述推測,所謂的簽名是先計算資料塊的指紋(訊息摘要),然後對指紋進行dsa/rsa加密運算
在生成 dsa 金鑰對時,金鑰大小的範圍必須在 512 到 1024 位之間,且必須是 64 的倍數。預設的金鑰大小為 1024 位。
所謂簽名,就是用實體的(簽名人,在證書中也稱為簽發人)私鑰對某些資料進行計算。私鑰用於計算簽名
****自簽名證書使用流程:訊息傳送人(同時擔任證書簽發人)-alice,訊息接受人-bob
第一階段:傳遞可信任證書
alice:
1. keytool -genkey -keystore alice.store -alias alice // 建立密匙庫,並用別名生成密匙對;
2. keytool -export -keystore alice.store -alias alice -file alice.cert // 匯出證書檔案;自簽名證書
bob:
可選操作:keytool -printcert -file alice.cert // 列印證書;
1. keytool -import -keystore bob.store -alias alice -file alice.cert // 將證書加入bob的密匙庫中
第二階段:傳遞資訊
alice:簽名文件:
1. jar cvf document.jar document.txt
2. jarsigner -keystore alice.store document.jar alice // 新增簽名;
alice把文件傳送給bob
bob: 校驗文件:
1. jarsigner -verify -keystore bob.store document.jar // jarsigner自動在bob.store中匹配證書並校驗
Java學習筆記之JOptionPane
你喜歡看定影嗎?自定義詢問 intn joptionpane.showconfirmdialog this,你喜歡藍色嗎?詢問 joptionpane.yes no option intn joptionpane.showconfirmdialog this,你喜歡藍色嗎?詢問 joptionpan...
Java學習筆記之陣列
陣列 概念 同一種型別資料的集合,其實陣列就是乙個容器.陣列的好處 可以自動給陣列中的元素從0開始編號,方便操作這些元素.格式1 元素型別 陣列名 new 元素型別 元素個數 格式2 元素型別 陣列名 new 元素型別 記憶體的劃分 1 暫存器 2 本地方法區 3 方法區 4 棧記憶體 儲存的都是區...
java學習筆記之異常
基礎的就不多說了,說一下容易被忽略的知識點。a 不管有木有出現異常,finally塊中 都會執行 b 當try和catch中有return時,finally仍然會執行 c finally是在return後面的表示式運算後執行的 此時並沒有返回運算後的值,而是先把要返回的值儲存起來,管finally中...