相关疑难解决方法(0)

如何使用Android KeyStore安全存储任意字符串?

我希望能够在Android KeyStore中安全地存储一些敏感字符串.我从服务器获取字符串但我有一个用例需要我坚持它们.KeyStore只允许从与分配给我的应用程序的UID相同的UID进行访问,并且它将使用设备主密码加密数据,因此我的理解是我不需要进行任何额外的加密来保护我的数据.我的麻烦是,我遗漏了一些关于如何写数据的事情.只要省略对KeyStore.store(null)的调用,我下面的代码就可以完美地工作.该代码失败,只要我将数据放入KeyStore后就无法存储,那么我就无法坚持下去.

我想我错过了关于KeyStore API的一些内容,但我不知道是什么.任何帮助赞赏!

String metaKey = "ourSecretKey";
String encodedKey = "this is supposed to be a secret";
byte[] encodedKeyBytes = new byte[(int)encodedKey.length()];
encodedKeyBytes = encodedKey.getBytes("UTF-8");
KeyStoreParameter ksp = null;

//String algorithm = "DES";
String algorithm = "DESede";
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance(algorithm);
SecretKeySpec secretKeySpec = new SecretKeySpec(encodedKeyBytes, algorithm);
SecretKey secretKey = secretKeyFactory.generateSecret(secretKeySpec);

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());

keyStore.load(null);

KeyStore.SecretKeyEntry secretKeyEntry = new KeyStore.SecretKeyEntry(secretKey);
keyStore.setEntry(metaKey, secretKeyEntry, ksp);

keyStore.store(null);

String recoveredSecret = "";
if (keyStore.containsAlias(metaKey)) {
    KeyStore.SecretKeyEntry recoveredEntry = (KeyStore.SecretKeyEntry)keyStore.getEntry(metaKey, ksp);
    byte[] bytes …
Run Code Online (Sandbox Code Playgroud)

android android-keystore

43
推荐指数
3
解决办法
3万
查看次数

标签 统计

android ×1

android-keystore ×1