2017-04-02 139 views
2

安全不是我的專長領域,但我有一個關於使用API​​ 18及以上版本將密鑰存儲在Android KeyStore中的問題。我使用下面的代碼,試圖儲存我的鑰匙:使用API​​ 18及以上版本在Android KeyStore中存儲密鑰

KeyStore ks = KeyStore.getInstance("AndroidKeyStore"); 
ks.load(null); 

KeyStore.SecretKeyEntry sKeyEntry = new KeyStore.SecretKeyEntry(ivKey); 

ks.setEntry(ALIAS, sKeyEntry, null); // This is where the issue is 

據我所知,「空」應該是一個KeyProtection PARAM我建,但這不適用於API 18.是否有辦法解決這個問題?我一直很難找到任何有效的工具。

編輯我應該指出,把它當作空引發錯誤:

java.security.KeyStoreException: Protection parameters must be specified when importing a symmetric key

回答

0

AndroidKeyStore不支持的密鑰,直到API級別23.做你想做你有什麼目標23或以上。

你可以做的是使用AndroidKeyStore支持公鑰/私鑰對(例如RSA)來加密密鑰材料,然後將其存儲在本地文件中。當你想使用它時,你需要使用私鑰解密它,然後一旦你有密鑰材料,使用普通的Java加密API(即不指定「AndroidKeyStore」)對它進行密碼操作。

要了解如何使用AndroidKeyStore RSA密鑰對加密和解密,看看http://www.androidauthority.com/use-android-keystore-store-passwords-sensitive-information-623779/

不過,我不認爲這實際上實現了從安全角度來看事情。你想達到什麼安全目標?

+0

爲什麼不應該使用「AndroidKeyStore」?有什麼缺點嗎? –

相關問題