Android: процесс расшифровки занимает много времени - PullRequest
0 голосов
/ 10 июня 2019

Когда мы создаем набор ключей со следующим кодом:

val generator = KeyPairGenerator.getInstance(RSA)
generator.initialize(KEY_SIZE)
val keyPair = generator.genKeyPair()

Затем, когда мы вызываем следующее:

val cipher = Cipher.getInstance(RSA_TRANSFORMATION)
cipher.init(Cipher.DECRYPT_MODE, privateKey)

Выполнение метода init выполняется в течение 0-2 миллисекунд.

Но когда мы пытаемся создать ключ со следующим, нам нужно сохранить закрытый ключ в хранилище ключей:

val keyPairGenerator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore")
        keyPairGenerator.initialize(keyGenParameterSpecBuilder.getProvider()
                .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)
                .setDigests(KeyProperties.DIGEST_SHA1)
                .setKeySize(KEY_SIZE)
                .build())

        keyPairGenerator.genKeyPair()

Этот же метод init занимает более 35-40 миллисекунд для выполнения.Также, если мы комментируем setEncryptionPaddings и setDigest, метод init вызывает исключение.

Ожидаемый результат: возможность сохранить закрытый ключ в KeyStore и выполнение метода init за 0-2 миллисекунды, как это происходит без генератора провайдера.

...