Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android數字簽名解析(三)

Android數字簽名解析(三)

編輯:關於Android編程

在剛才開始學習android數字簽名的相關知識點的時候,被資料中出現的keystore、x509、密鑰對、debug.keystore弄的暈頭
轉向,經過一段時間的了解,總算明白一些。

一、make_key腳本生成密鑰對
android源碼中自帶的工具make_key(development/tools/目錄下)可以用來生成RSA密鑰對。

./make_key test ‘/C=CN/ST=SH/L=SH/O=TEST/OU=TEST/CN=TEST’

運行以上命令將生成密鑰對test.pk8和test.x509.pem。該命令中, /C表示“Country Code”,/ST表示“State orProvince”,/L表示“City or
Locality”,/O表示“Organization”,/OU表示“Organizational Unit”,/CN表示“Name”。

make_key腳本中關鍵代碼如下:

( openssl genrsa -f4 2048 | tee ${one} > ${two} ) &
openssl req -new -x509 -sha1 -key ${two} -out $1.x509.pem \
  -days 10000 -subj "$2" &
if [ "${password}" == "" ]; then
  echo "creating ${1}.pk8 with no password"
  openssl pkcs8 -in ${one} -topk8 -outform DER -out $1.pk8 -nocrypt
else
  echo "creating ${1}.pk8 with password [${password}]"
  echo $password | openssl pkcs8 -in ${one} -topk8 -outform DER -out $1.pk8 \
    -passout stdin

其實主要利用了openssl來實現, openssl是一個強大的命令,要了解openssl, 可以參考百度百科http://baike.baidu.com/view/300712.htm?fr=aladdin

二、keytool生成密鑰
Android數字簽名解析(一)中介紹過用keytool生成密鑰的方法,

keytool -genkey -alias test.keystore -keyalg RSA -validity 10000 -keystore test.keystore

keytool為JDK中自帶的工具,一些第三方的應用開發者,由於沒有Android源碼環境, 所以會采用keytool來生成密鑰。


三、make_key生成的密鑰對轉換為keystore中的密鑰

1、把pkcs8格式的私鑰轉換為pkcs12格式:
openssl pkcs8 -in test.pk8 -inform DER -outform PEM -out test.priv.pem -nocrypt

2、生成pkcs12格式的密鑰文件:
openssl pkcs12 -export -in test.x509.pem -inkey test.priv.pem -out test.pk12 -name testkey

3、生成keystore:
keytool -importkeystore -deststorepass android -destkeypass android -destkeystore test.keystore -srckeystore shared.pk12
srcstoretype PKCS12 -srcstorepass android -alias testkey

這樣就生成了一個名為test.keystore的keystore文件,就可以用這個文件對apk簽名。

四、keystore中的密鑰轉換為密鑰對
1、keystore文件轉換為pkcs12格式
keytool -importkeystore -srckeystore test.keystore -destkeystore test.p12 -srcstoretype JKS - deststoretype PKCS12

2、dump pkcs12 文件
openssl pkcs12 -in test.p12 -nodes -out test.rsa.pem

3、以文本形式打開test.rsa.pem,復制“BEGIN CERTIFICATE” “END CERTIFICATE”之間的內容到一個文件
test.x509.pem, 即公鑰
4、復制 “BEGIN RSA PRIVATE KEY”“END RSA PRIVATE KEY” 之間的內容到一個文件test.rsa.pem,然後運行如下命令
openssl pkcs8 -topk8 -outform DER -in test.rsa.pem -inform PEM -out test.pk8 -nocrypt

這樣就test.x509.pem和test.pk8就生成了.





  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved