Не удалось преобразовать SecretKey в bytearray (java) - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь получить значение байтового массива сгенерированного SecretKey, но результат всегда равен нулю,

Это мой код:

mKeyStore  = KeyStore.getInstance(ANDROID_KEYSTORE_PROVIDER);
            mKeyStore.load(null);
            KeyStore.SecretKeyEntry secretKeyEntry = null;
            if (!mKeyStore.containsAlias(KEY_ALIAS_AES)) {
                KeyGenerator keyGenerator = KeyGenerator.getInstance(
                        KeyProperties.KEY_ALGORITHM_AES, ANDROID_KEYSTORE_PROVIDER);

                KeyGenParameterSpec.Builder builder = null;
                builder = new KeyGenParameterSpec.Builder(
                        KEY_ALIAS_AES,
                        KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT);
                builder.setBlockModes(KeyProperties.BLOCK_MODE_CBC)
                        .setKeySize(256);
                keyGenerator.init(builder.build());
                sKey = keyGenerator.generateKey();
                secretKeyEntry = new KeyStore.SecretKeyEntry(sKey);
                mKeyStore.setKeyEntry(KEY_ALIAS_AES, secretKeyEntry.getSecretKey().getEncoded(), null);
            }
            try {
                tmpKey = mKeyStore.getKey(KEY_ALIAS_AES, null).getEncoded();
            } catch (UnrecoverableKeyException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (CertificateException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (InvalidAlgorithmParameterException e) {
            e.printStackTrace();
        } catch (NoSuchProviderException e) {
            e.printStackTrace();
        } catch (KeyStoreException e) {
            e.printStackTrace();
        }

tmpKey всегда равен нулю, любая помощь, пожалуйста?

...