erstellen Ich habe Probleme beim Konvertieren meines öffentlichen Schlüssels aus einer XML-Datei in Java. Nach einigen Nachforschungen scheint es, dass die X509-Codierung das am häufigsten verwendete Format ist.Konnte kein öffentliches Schlüsselobjekt aus XML in Java
Ich habe eine XML-Datei, die etwa wie folgt aussieht:
<RSAKeyValue>
<Modulus>hkjhvgkjewrlhfelwrkjvhwerkjlrkwjvbrvkjrbvkwjlvbwekvjbekvbwkbrkvbwrwebrvvbrlkvbklvrbkvlreb</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
(nicht mein eigentlicher Schlüsselwert)
Hier ist ein Beispiel für den Code, was ich versuchte:
File fXmlFile = new File(".....\\...\\...\\file.xml"); //Path to xml file
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("Modulus");
Node n = nList.item(0);
byte[] encKey = Base64.getEncoder().encode(n.getTextContent().getBytes());
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(encKey);
KeyFactory keyFactory = KeyFactory.getInstance("DSA", "SUN");
PublicKey pubKey = keyFactory.generatePublic(pubKeySpec);
In der letzten Zeile bekomme ich eine Ausnahme, die so aussieht:
java.security.spec.InvalidKeySpecException: Inappropriate key specification: invalid key format
at sun.security.provider.DSAKeyFactory.engineGeneratePublic(DSAKeyFactory.java:119)
at java.security.KeyFactory.generatePublic(KeyFactory.java:328)
at XmlReader.main(XmlReader.java:41)
Ich bin nicht sicher, was das Problem mit dem Schlüsselformat ist. Könnte es sich um ein Problem handeln, bei dem die Eingabe in eine Zeichenfolge konvertiert wird, die dazu führt, dass wichtige Daten für den Schlüssel verloren gehen?