Мне нужно сохранить закрытый и открытый ключи RSA. Вот создаю.
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.genKeyPair();
publicKey = kp.getPublic();
privateKey = kp.getPrivate();
Теперь я хочу использовать оба ключа в следующий раз. Поэтому они должны храниться на устройстве.
byte[] publicKeyBytes = publicKey.getEncoded();
byte[] privateKeyBytes = privateKey.getEncoded();
Таким образом, я могу получить массивы байтов, а затем сохранить их в виде текстового файла. Затем в следующий раз, когда я прочитаю его и преобразую обратно в массив байтов.
Теперь мой вопрос: как я могу преобразовать массив байтов обратно в ключ?
Это действительно не работает:
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec spec = new X509EncodedKeySpec(publicKeyBytes);
publicKey = keyFactory.generatePublic(spec);
spec = new X509EncodedKeySpec(privateKeyBytes);
privateKey = keyFactory.generatePrivate(spec);
В LogCat это будет отображаться:
Необходимо использовать RSAPublicKeySpec или PKCS8EncodedKeySpec; был java.security.spec.X509EncodedKeySpec
Любые идеи, что не так с этим кодом?
Спасибо за вашу помощь.