真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

關于加密、簽名及證書

   去年在開發(fā)一個安卓小游戲的時候,還煞有其事地對apk包做了個人簽名。當時只是照貓畫虎的按書上說的步驟來做,也沒深究為什么。最近比較詳細的了解了一下java的安全機制,才發(fā)現(xiàn)原來有那么多一知半解的問題。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:主機域名、虛擬空間、營銷軟件、網站建設、相山網站維護、網站推廣。

   先從非對稱加密的公鑰、私鑰機制說起。所謂非對稱就是指用私鑰加密的內容要用公鑰來解密(反過來用公鑰加密也一樣必須要用私鑰來解密。公、私其實是對等的一對兒,并非指技術方面,而是針對發(fā)布范圍來說的)

   有了這種加密、解密的唯一性,我們就可以有這樣一些結論:用私鑰/公鑰加密的,只有通過對應的公鑰/私鑰來解密;而能用某個公鑰/私鑰解開的,一定是用其私鑰/公鑰加密的。有點繞嘴,其實不難理解。利用這個特性,我們就可以達到一些互為驗證的目的。

然后介紹一下相關操作。先說關于keystore的:

Keystore是存儲密鑰對集合的文件,所以也叫密鑰庫文件(之前都不知道可以存儲多個)。利用jdk工具是這樣生成的:

keytool -genkey -alias mykey1 -keypass <這個key的密碼> -validity 1000 -keystore xxx.keystore

如果這個xxx.keystore文件還不存在,那么會新生成一個,同時要求輸入一個對xxx.keystore文件進行讀寫的密碼。這個和keypass后的密碼參數(shù)不需要相同。

繼續(xù)一條:

keytool -genkey -alias mykey2 -keypass <這個key的密碼> -validity 1000 -keystore xxx.keystore

這個時候xxx.keystore文件已經存在了,所以這個命令是再追加進去一個密鑰對。所以輸入第一次設定的讀寫密碼即可。

從字面意義看會以為alias是個可有可無的別名,但其實不是,這個參數(shù)是必須的,是一對密鑰的“正式”的名字。即便我們不輸入這個參數(shù):-alias mykey1,那么系統(tǒng)也會自動生成一個叫做mykey的密鑰對名字;

如果沒有這個參數(shù):-keypass <這個key的密碼>,那么系統(tǒng)會提示輸入。當然直接回車是設定為和庫文件的讀寫密碼相同。

那么現(xiàn)在呢,實際上xxx.keystore里已經存了兩個密鑰對,mykey1和mykey2??梢杂眠@個命令查看:

Keytool –list –keystore xxx.keystore,當然查看也是需要輸入密碼的

有了這些密鑰對,即可以對jar文件進行簽名了。命令是這樣的:

jarsigner -keystore xxx.keystore -storepass <文件讀寫密碼> -keypass <這個key的密碼> xxx.jar mykey1

同樣的,如果沒有這個參數(shù):-storepass <文件讀寫密碼>,系統(tǒng)會要求輸入。沒有這個參數(shù):-keypass <這個key的密碼>,一種情況是mykey1的密碼和庫密碼相同,那么就可以簽名成功。如果不同,那就會報錯。

導出公鑰為一個證書,命令是:

Keytool –export –file xxx.cer –keystore xxx.keystore –alias mykey1,輸入庫密碼后,會生成一個xxx.cer的證書文件。

一個庫里可以有多個密鑰,但一個證書里只有一個公鑰。用命令keytool -printcert -file xxx.cer查看證書,結果是庫密鑰列表中的一個。

私鑰一般用命令導不出來(也沒有導出的必要)。但是可以用寫代碼來導出。


分享題目:關于加密、簽名及證書
轉載注明:http://weahome.cn/article/peicij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部