2017-10-06 47 views
0

根據所有的讀數,我發現在使用USB令牌(HSM)時,我們無法獲取私有密鑰從USB令牌,那麼爲什麼我們在java代碼中調用KeyStore.getKey(alias,password)儘管usb令牌的privateKey不可訪問,但爲什麼我們在Java中使用keystore.getKey()來進行數字簽名pdf

我做了這樣的事情,其中​​ks是我的KeyStore對象。

PrivateKey privateKey=(PrivateKey)ks.getKey(alias,pass.toCharArray()); 

然後打印privateKey我得到以下值。

{algorithm: "RSA", encoded: null, format: null} 

任何人能解釋這一步的需要,它會做什麼,而我們數字簽名使用USB令牌的文件?

回答

1

PrivateKey是一個接口,實現取決於加密提供者。

就你而言,對於USB令牌,提供者(可能是Sun pkcs#11)在執行加密操作時將pkcs11命令封裝到令牌。私鑰沒有真正包含在您的Java服務中,並且命令在令牌上執行

私鑰是不可抽取的,因此encoded值必須爲空。例如,如果您使用Pkcs12密鑰庫(本地.p12文件),您將看到encoded屬性包含以DER格式編碼的私鑰

相關問題