Android |Получение закодированного секретного ключа возвращает ноль - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь сгенерировать ключ на основе кода биометрических данных / пароля устройства для пользователей Android, чтобы потом использовать его для защиты конфиденциальной информации. У меня есть следующий код:

    KeyGenerator kg = KeyGenerator.getInstance(
        KeyProperties.KEY_ALGORITHM_AES,
        "AndroidKeyStore"
    );
    KeyGenParameterSpec.Builder kgps = new KeyGenParameterSpec.Builder(
        "myDeviceKey",
        (KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
    );
    kgps.setBlockModes(KeyProperties.BLOCK_MODE_GCM);
    kgps.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE);
    kgps.setKeySize(256);
    kgps.setUserAuthenticationRequired(true);
    if (Build.VERSION.SDK_INT >= 24) {
      kgps.setInvalidatedByBiometricEnrollment(false);
    }
    kgps.setUserAuthenticationValidityDurationSeconds(120);
    kg.init(kgps.build());
    SecretKey secret = kg.generateKey();
    byte[] x = secret.getEncoded();

Моя проблема в том, что когда я пытаюсь получить зашифрованную версию секрета, он возвращает ноль. Есть ли у кого-нибудь понимание того, что я могу здесь делать неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...