Сгенерируйте KeyPair, используя общедоступные и частные файлы JKS.

Можно ли сгенерировать KeyPair для использования в моем приложении, используя уже созданные файлы открытого и закрытого хранилища ключей (JKS)?

Спасибо

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(2048);
KeyPair keypair = keyGen.genKeyPair();

Я хочу создать пару ключей с уже сгенерированными RSA 2048 закрытым и открытым ключами


person user3520080    schedule 18.01.2017    source источник


Ответы (1)


Вы можете использовать, как показано ниже:

public static KeyPair loadKeyStore(final File keystoreFile,
        final String password, final String alias, final String keyStoreType)
        throws Exception {
    if (null == keystoreFile) {
        throw new IllegalArgumentException("Keystore url may not be null");
    }
    final KeyStore keystore = KeyStore.getInstance(keyStoreType);
    InputStream is = null;
    try {
        is = new FileInputStream(keystoreFile);
        keystore.load(is, null == password ? null : password.toCharArray());
    } finally {
        if (null != is) {
            is.close();
        }
    }
    final PrivateKey key = (PrivateKey) keystore.getKey(alias,
            password.toCharArray());
    final Certificate cert = keystore.getCertificate(alias);
    final PublicKey publicKey = cert.getPublicKey();
    return new KeyPair(publicKey, key);

}
person Dilip Singh Kasana    schedule 18.01.2017
comment
Для параметра final File keystoreFile мы передаем общедоступное или закрытое хранилище ключей? - person user3520080; 18.01.2017
comment
Когда я загружаю закрытое хранилище ключей, я получаю исключение для этого кода Exception in thread "main" java.security.UnrecoverableKeyException: Cannot recover key - person user3520080; 18.01.2017
comment
Проблема в том, что и сертификат, и ключ имеют разные пароли, поэтому мне нужно передать и ключ, и сертификат. Я немного обновил код, и он работает - person user3520080; 18.01.2017