2017-01-18 4 views
1

Возможно ли создать KeyPair для использования в моем приложении с использованием уже созданных файлов Public и Private keystore (JKS)?Генерировать KeyPair с использованием общедоступных и частных файлов JKS

Благодаря

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

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

ответ

0

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

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); 

} 
+0

Для параметра «конечный файл keystoreFile» мы передаем публичное или частное хранилище ключей? – user3520080

+0

Когда я загружаю личное хранилище ключей, я получаю исключение для этого кода «Исключение в потоке» main «java.security.UnrecoverableKeyException: не удается восстановить ключ – user3520080

+0

Ах, у вас есть как cert, так и ключ имеют разные пароли, поэтому мне нужно передать как ключ, так и cert pass. Я немного обновил код, и он работает – user3520080

Смежные вопросы