2

在我的应用程序中,我在共享首选项中保存了一些数据,这些数据在保存之前必须加密,并且在检索时必须解密。

我正在使用 AES-256 加密。为此,我正在使用密码/密码生成密钥。下面是我的代码片段。

    public static SecretKey generateKey(char[] passphraseOrPin, byte[] salt) throws NoSuchAlgorithmException, InvalidKeySpecException {
    // Number of PBKDF2 hardening rounds to use. Larger values increase
    // computation time. You should select a value that causes computation
    // to take >100ms.
    final int iterations = 1000; 

    // Generate a 256-bit key
    final int outputKeyLength = 256;

    SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
    KeySpec keySpec = new PBEKeySpec(passphraseOrPin, salt, iterations, outputKeyLength);
    SecretKey secretKey = secretKeyFactory.generateSecret(keySpec);
    return secretKey;
}

根据我的应用程序,我可以要求用户提供一个独特的 pin。但我无法将密码保存在密钥库中,因为该应用程序必须从 4.0.0 开始支持。如何保存图钉?

4

2 回答 2

0

请改用钥匙串。它与 API 14 (ICS) 兼容。主要区别在于 KeyChain 在系统范围内可用。

但是,我想知道,你为什么要存放别针?存在受密码保护的密钥以防止未经授权的使用,因此用户应通过输入他/她的密码来授权使用。

于 2016-04-26T18:05:36.093 回答
0

为此,我建议您考虑使用 Facebook Conceal 库。根据他们的要求,它与最高 API 9 的 android 兼容build.gradlehttps ://github.com/facebook/conceal/blob/master/build.gradle

您可以在此处的网站上按照他们的指导了解如何集成:

https://github.com/facebook/conceal

于 2016-04-24T09:50:35.743 回答