我想将秘密数据存储在我的应用的私钥库中。
但是,当我正在处理代码时,Android Studio警告KeyPairGeneratorSpec.Builder(context)
需要API级别18,我至少要将14作为目标。 : - (
如何在我的应用中为Android API级别14到17存储秘密数据?
答案 0 :(得分:6)
AndroidKeyStore通常由硬件支持(但不一定如此)在API级别18中正式引入,如您所见,并在此处描述:http://developer.android.com/training/articles/keystore.html
Nikolay Elenkov写了一个不错的小应用来测试你可以在这里找到的AndroidKeyStore:https://github.com/nelenkov/android-keystore
如果你深入研究AOSP,你可以使用一些技巧来使它在API级别17上工作,但不能保证它能在每个设备上运行,所以它有点毫无意义。在此之前你绝对不会让它发挥作用。
实际上没有必要使用AndroidKeyStore来存储您的私钥,除非您对安全性非常偏执,并要求它由硬件或独立进程(非硬件支持的设备上的密钥库进程)支持。
如果您自己在应用程序中生成密钥对并将其保存在数据区的密钥库文件中,则其他任何Android应用程序都无法读取您的密钥,这对于大多数应用程序而言足够安全。您甚至可以允许用户使用他们选择的密码保护密钥库。
关于使用Java生成密钥对的一些很好的信息,Android可以在这里找到:
Android RSA Keypair Generation - Should I use Standard Java/Bouncy Castle/Spongy Castle/JSch/Other?
JAVA: How to save a private key in a pem file with password protection
https://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html