Я очень мало знаю об Android API, но могу рассказать, как вы поступите с этим.Я сомневаюсь, что в API есть способ сделать это напрямую, но, возможно, этой информации вам будет достаточно, чтобы собрать воедино, что делать.
Чтобы сгенерировать ключ RSA, вам нужно сгенерировать два относительнобольшие простые числа.Я бы сгенерировал два числа с не менее чем 768 битами на штуку.
Техника генерации этих простых чисел заключается в использовании криптографически безопасного генератора псевдослучайных чисел (PRNG) для генерации 766-битных значений.По сути, генерируем 96 байтов и отбрасываем верхние 2 бита.Затем вы сдвигаете значение на бит вверх и устанавливаете младший и старший бит, чтобы у вас было нечетное число, которое> = 2**767 + 1
(и для этого требуется 768 бит для представления).Затем вы передаете сгенерированное число в вероятностный простой тест.Сначала вы проверяете делимость на первые несколько нечетных простых чисел, так что 3, 5, 7, 11, 13 и 17. Затем вы запускаете несколько итераций Миллера-Рабина.
Если число проходит эти тесты, выСкорее всего, есть простое число, если это не так, вы начинаете сначала и генерируете новый номер.
Создайте два таких простых числа, и у вас есть ключ RSA.
Для генерацииэти простые числа из 32 байтов случайных данных, вам нужно заполнить PRNG этими данными.
Лично я бы рекомендовал получить 128 байтов случайных данных.Вы заполняете PRNG первыми 64 байтами, а затем каждый раз, когда вызываете его, добавляете еще один байт ваших случайных данных в пул энтропии вашего PRNG.Любой криптографически безопасный PRNG будет иметь метод для этого.