【问题标题】:KeyStore doesn't return correct keyKeyStore 没有返回正确的密钥
【发布时间】:2018-04-15 13:25:27
【问题描述】:

我正在尝试将 AES 密钥存储在 Android KeyStore 中:

        String alias = "alias7";

        KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
        keyStore.load(null);

        KeyGenerator keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES);
        keyGenerator.init(256);
        SecretKey secretKey = keyGenerator.generateKey();

        if (!keyStore.containsAlias(alias)) {
            keyStore.setEntry(
                alias,
                new KeyStore.SecretKeyEntry(secretKey),
                new KeyProtection.Builder(KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
                    .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
                    .build());
        }

        System.out.println(keyStore.getKey(alias, null));

        SecretKey storedSecretKey = ((KeyStore.SecretKeyEntry) keyStore.getEntry(alias, null)).getSecretKey();

        System.out.println(secretKey.toString());
        System.out.println(secretKey.getAlgorithm());
        System.out.println(secretKey.getEncoded().length);

        System.out.println('-');

        System.out.println(storedSecretKey.toString());
        System.out.println(storedSecretKey.getAlgorithm());
        System.out.println(storedSecretKey.getEncoded().length);

在我的日志中:

I/System.out:android.security.keystore.AndroidKeyStoreSecretKey@51abbd87

I/System.out: javax.crypto.spec.SecretKeySpec@fffe879c

I/System.out:AES

I/System.out: 32

I/System.out:-

I/System.out:android.security.keystore.AndroidKeyStoreSecretKey@51abbd87

I/System.out:AES

最后一个 System.out.println() 没有返回“32”——它会抛出一个错误:

java.lang.NullPointerException: 尝试获取空数组的长度

为什么?

【问题讨论】:

    标签: java android aes keystore


    【解决方案1】:

    存储在 AndroidKeyStore 中的密钥是不可提取的,因此任何获取密钥内容的尝试,例如存储密钥上的secretKey.getEncoded(),都必须失败。

    这是 AndroidKeyStore 的安全措施。可以使用密钥,但不暴露密钥材料。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多