- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想将 secret 数据存储在我的应用程序的私有(private) keystore 中。
但是,当我编写代码来执行此操作时,Android Studio 警告说 KeyPairGeneratorSpec.Builder(context)
需要 API 级别 18,我的目标是至少 14。 :-(
如何在适用于 Android API 级别 14 到 17 的应用中存储 secret 数据?
最佳答案
如您所见,通常由硬件支持(但不一定如此)的 AndroidKeyStore 已在 API 级别 18 中正式引入,并在此处进行了描述:http://developer.android.com/training/articles/keystore.html
Nikolay Elenkov 编写了一个不错的小应用程序来测试 AndroidKeyStore,您可以在这里找到它:https://github.com/nelenkov/android-keystore
如果您深入研究 AOSP,可以使用一些技巧让它在 API 级别 17 上正常工作,但不能保证它在所有设备上都能正常工作,所以它有点毫无意义。在那之前你肯定不会让它在任何事情上工作。
实际上没有必要使用 AndroidKeyStore 来存储您的私钥,除非您对安全性非常偏执并要求它由硬件支持或在隔离进程中(非硬件支持设备上的 keystore 进程)。
如果您自己在您的应用程序中生成 key 对并将其保存在您的数据区域的 keystore 文件中,则其他 Android 应用程序将无法读取您的 key ,这对大多数应用程序来说足够安全。您甚至可以允许用户使用他们选择的密码来保护 keystore 。
可以在此处找到有关在使用 Java 和 Android 的软件中生成 key 对的一些有用信息:
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
关于android - 将 KeyPairGeneratorSpec 用于 Android API 级别 < 18?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28905539/
KeyPairGeneratorSpec自 API 23 以来已弃用。您如何处理此警告? 示例代码: KeyPairGenerator kpg = KeyPairGenerator.getInstan
我正在构建一个 keystore ,我将在其中隐藏我的授权和刷新 token 。我使用的是 API 19。查看 KeyPairGeneratorSpec 的示例。大多数示例使用虚拟证书 (X500Pr
当我在 API 24 中使用这个 KeyPairGeneratorSpec 对象时,我的类有效。 KeyPairGeneratorSpec spec = new KeyPairGeneratorSpe
以下方法已弃用 KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore"); KeyPair
我想将 secret 数据存储在我的应用程序的私有(private) keystore 中。 但是,当我编写代码来执行此操作时,Android Studio 警告说 KeyPairGeneratorS
Android Keystore (使用 KeyPairGeneratorSpec 等)在 API 级别 18 中引入。但是,方法 KeyPairGeneratorSpec.Builder.setKe
我是一名优秀的程序员,十分优秀!