【问题标题】:Use KeyPairGeneratorSpec for Android API level < 18?为 Android API 级别 < 18 使用 KeyPairGeneratorSpec?
【发布时间】:2015-03-06 18:44:45
【问题描述】:

我想将秘密数据存储在我的应用程序的私钥库中。

但是,当我正在编写代码以执行此操作时,Android Studio 警告说KeyPairGeneratorSpec.Builder(context) 需要 API 级别 18,而我的目标是至少 14。 :-(

如何在我的应用中存储适用于 Android API 级别 14 到 17 的秘密数据?

【问题讨论】:

标签: android android-keystore android-security


【解决方案1】:

如您所见,通常由硬件支持(但不一定如此)的 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

【讨论】:

    猜你喜欢
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    相关资源
    最近更新 更多