Сохранить DSA ключ
Генерирую вот таким образом приватный и публичный ключ для цифровой подписи алгоритмом DSA.
Signature signature = Signature.getInstance("SHA256WithDSA");
SecureRandom secureRandom = new SecureRandom();
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA");
KeyPair keyPair = keyPairGenerator.generateKeyPair();
//signature.initSign(keyPair.getPrivate(), secureRandom);
String pub = Base64.encodeToString(keyPair.getPublic().getEncoded(), Base64.DEFAULT);
String priv = Base64.encodeToString(keyPair.getPrivate().getEncoded(), Base64.DEFAULT);
Закодировал данную строку в формат base64. Подразумевается, что я смогу передать данные ключи другому приложению, где из base64 строки я верну приватный и публичный ключ.
Подскажите как можно преобразовать переменную pub обратно в публичный ключ? Или может есть более удачное решение для хранения и передачи ключей?
Ответы (1 шт):
Автор решения: Yura Ivanov
→ Ссылка
Так:
public static PublicKey getKey(String base64encoded){
try{
byte[] byteKey = Base64.decode(base64encoded.getBytes(), Base64.DEFAULT);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(byteKey);
KeyFactory factory = KeyFactory.getInstance("DSA");
return factory.generatePublic(keySpec);
}
catch(Exception e){
e.printStackTrace();
}
return null;
}