Как создать уникальную пару ключей RSA (2048) с помощью провайдера AndroidKeyStore? - PullRequest
0 голосов
/ 12 июня 2019

У меня есть этот код в моем Android-приложении для генерации RSA KeyPair.Этот код генерирует ту же пару ключей на Android 8 на некоторых устройствах.Устройства включают Lenovo K8, Nokia 3.

Только на этих устройствах сгенерированная пара ключей одинакова для всех моделей.Если я не использую AndroidKeyStore Provider и вместо этого использую BouncyCastle, ключи являются уникальными.Но я хочу использовать провайдер Android и по-прежнему генерировать уникальные ключи.

KeyPairGenerator keyPairGenerator = null;
try {

    keyPairGenerator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");

    KeyGenParameterSpec spec = new KeyGenParameterSpec.Builder("somealias", KeyProperties.PURPOSE_SIGN)
        .setDigests(KeyProperties.DIGEST_SHA256)
        .setKeySize(2048)
        .build();
    keyPairGenerator.initialize(spec);

} catch(Exception e) {
    throw new KeyStoreException(e);
}

KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();

byte[] encodedP = publicKey.getEncoded();

Необходимо каждый раз получать уникальные ключи и на всех устройствах.

Зашифрованные в Base64 значения encodeP сдва последовательных прогонов с использованием этой строки кода:.
строка basePub = Base64.getEncoder () encodeToString (encodedP);

ПУСК # 1

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9RmCTb9FJG8rS9ldKiLQsQ7wNtKMvr8aLB + 5V7VlNxKkL14ZE + gBMbsHg0QNEL7SL + UiorDeHT5gMg1pHQrq / dJY8WehjXmOsjol8DZaX0qsOLKAqCP0mYK90OjbyZOoGNs7qq7crtSv+ oF8aDFzUcTbx / SghEQM9ZjGXSgckpPUsMX3zzf3cZvwZPbTG6y9qAR43nlEAIRaeAPtz8hh / FunW5UeXajsHpyoD9im4HRgm3OzoZYdHXd6kSy1eCmqNJ4DzVmq9EVpX5YTBb3RqeADk7pVGck + eJK4d91Vk5cdsykX6ITCfQwFi1duywHkAZjIG6lXxsTW1HoC96qIfwIDAQAB

* * 1014 RUN # 2 * * 1016 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9RmCTb9FJG8rS9ldKiLQsQ7wNtKMvr8aLB + 5V7VlNxKkL14ZE + gBMbsHg0QNEL7SL + UiorDeHT5gMg1pHQrq / dJY8WehjXmOsjol8DZaX0qsOLKAqCP0mYK90OjbyZOoGNs7qq7crtSv + oF8aDFzUcTbx / SghEQM9ZjGXSgckpPUsMX3zzf3cZvwZPbTG6y9qAR43nlEAIRaeAPtz8hh / FunW5UeXajsHpyoD9im4HRgm3OzoZYdHXd6kSy1eCmqNJ4DzVmq9EVpX5YTBb3RqeADk7pVGck + eJK4d91Vk5cdsykX6ITCfQwFi1duywHkAZjIG6lXxsTW1HoC96qIfwIDAQAB
...