В диапазоне [1,37] есть только 37 ^ 4 = 1 874 161 расположение четырех целых чисел (с разрешенными повторениями). Перечислите их, сохраняя и считая перестановки, которые в сумме составляют 40. (Это будет намного меньшее число, N).
Нарисуйте равномерно распределенные случайные целые числа K в интервале [0, N-1] и верните K-ю перестановку. Это легко увидеть, чтобы гарантировать равномерное распределение в пространстве возможных результатов, причем каждая позиция последовательности одинаково распределена. (У многих ответов, которые я вижу, окончательный выбор будет смещен ниже, чем первые три!)
Вы не поверите, но keytool не предоставляет такие базовые функции, как импорт закрытого ключа в хранилище ключей. Вы можете попробовать этот обходной путь с объединением файла PKSC12 с личным ключом в хранилище ключей.
Или просто используйте более удобный для пользователя KeyMan от IBM для обработки хранилища ключей вместо keytool.exe.
Да, это действительно печальный факт, что keytool не имеет функции для импорта закрытого ключа.
Для записи, в конце я выбрал решение, описанное здесь
KeyTool в Java 6 имеет имеющиеся возможность: Импорт частных ключей в клавиш Java с помощью KeyTool
вот основные детали из этого поста.
Преобразовать существующий сертификат на PKCS12 с помощью OpenSSL. Пароль требуется при запросе или 2-м этап будет жаловаться.
OpenSSL PKCS12-export -in [my_certificate.chrt] -inkey [my_key.key] -Out [keystore.p12] -name [new_alias] -cafile [my_ca_bundle.crt] root
Преобразуйте PKCS12 в файл клавиш Java.
KeyTool -Importkeystore -deststorepass [new_keystore_pass] -destkeypass [new_key_pass] -destkeystore [keystore.jks] -srckeyStore [keystore.p12] -srcStoreToretype pkcs12 -Srcstorepass [pass_used_in_p12_keystore] -алиас [alias_used_in_p12_keystore]