Подтвердить что ты не робот

Как преобразовать массив байтов в тип PrivateKey или PublicKey?

Я использую алгоритм RSA для генерации открытого и закрытого ключа

final KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM);
keyGen.initialize(1024);
final KeyPair key = keyGen.generateKeyPair();
final PrivateKey privateKey=key.getPrivate();
final PublicKey publickey=key.getPublic();

после этого эти ключи кодируются с использованием кодировщика Base64 и сохраняют его в базе данных.

Как преобразовать эту закодированную строку в частный и открытый ключ. Тип в java - это дешифрование файла. при декодировании этой строки с использованием Base64Decoder будет получен массив байтов. как преобразовать этот массив байтов в открытый или закрытый ключ?

4b9b3361

Ответ 1

Если у вас есть байт [], представляющий вывод getEncoded() для ключа, вы можете использовать KeyFactory, чтобы вернуть его обратно в объект PublicKey или объект PrivateKey.

byte[] privateKeyBytes;
byte[] publicKeyBytes;
KeyFactory kf = KeyFactory.getInstance("RSA"); // or "EC" or whatever
PrivateKey privateKey = kf.generatePrivate(new PKCS8EncodedKeySpec(privateKeyBytes));
PublicKey publicKey = kf.generatePublic(new X509EncodedKeySpec(publicKeyBytes));