So erstellen Sie ein Schlüsselpaar von ecdsa in einem Format, das von Java gelesen werden kann

Einführung

In einigen Fällen, z. B. bei JWT, möchten Sie mit dem öffentlichen / privaten Schlüssel auf dem Server signieren und überprüfen. Ich denke, dass die Seite der JWT-Bibliothek eine Methode zum Erstellen eines Schlüsselpaars bietet. Wenn Sie diese verwenden, wird bei jedem Start der Anwendung ein Schlüsselpaar generiert. Wenn Sie die zuvor ausgegebene JWT nicht bei jedem Start deaktivieren können, verwenden Sie ein festes Schlüsselpaar.

Heutzutage scheint ECDSA häufiger als RSA verwendet zu werden, da es kleiner ist und die gleiche Verschlüsselungsstärke aufweist.

Schlüssel erstellen

Im PEM-Format erstellen.

openssl ecparam -genkey -name secp256k1 -out key-pair.pem
openssl pkcs8 -topk8 -inform pem -in key-pair.pem -outform pem -nocrypt -out private.pem
openssl ec -in key-pair.pem -pubout -outform pem -out public.pem

private key

privater Schlüssel ist

import java.nio.file.Files;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;

String privatePem = new String(Files.readAllBytes(path))
                    .replaceAll("\\r\\n", "")
                    .replaceAll("\\n", "")
                    .replaceAll("-----BEGIN PRIVATE KEY-----", "")
                    .replaceAll("-----END PRIVATE KEY-----", "");
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privatePem));
PrivateKey privateKey = KeyFactory.getInstance("EC").generatePrivate(keySpec);

public key

String publicPem = new String(Files.readAllBytes(jwtSettings.getPublicKeyAsPath()))
                    .replaceAll("\\r\\n", "")
                    .replaceAll("\\n", "")
                    .replaceAll("-----BEGIN PUBLIC KEY-----", "")
                    .replaceAll("-----END PUBLIC KEY-----", "");
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(publicPem));
PublicKey publicKey =  KeyFactory.getInstance(jwtSettings.getAlgorithm()).generatePublic(keySpec);

Referenzlink

Recommended Posts

So erstellen Sie ein Schlüsselpaar von ecdsa in einem Format, das von Java gelesen werden kann
Schreiben einer Klasse, die in Java bestellt werden kann Ein kleines Standard-Memo
Ich habe einen RESAS-API-Client in Java erstellt
So erstellen Sie einen Java-Container
So erstellen Sie ein Java-Array
Zusammenfassung von ORM "uroboroSQL", das in Enterprise Java verwendet werden kann
So implementieren Sie einen Job, der die Java-API in JobScheduler verwendet
So erstellen Sie eine Java-Kalenderzusammenfassung
Wie erstelle ich einen Discord Bot (Java)
So testen Sie eine private Methode und verspotten sie teilweise in Java
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
So zeigen Sie eine Webseite in Java an
Melden Sie eine CSV-Datei ab, die von Excel mithilfe von Logback gelesen werden kann
So erstellen Sie eine eindeutige Datenkombination in der Schienen-Zwischentabelle
Speichern Sie die Daten, die von JavaFX gelesen werden können, als PNG
So legen Sie fest, dass Tabulatoren und Leerzeichen sichtbar sind, indem Sie mit der Tabulatortaste Leerzeichen in Java-Dateien in Eclipse einfügen
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
[Java] Ganzzahlige Informationen von Zeichen in der Textdatei, die mit der Methode read () erfasst wurden
[Java] So erhalten Sie den Schlüssel und den Wert, die in Map gespeichert sind, durch iterative Verarbeitung
So erstellen Sie einen Daten-URI (base64) in Java
[Java] So erhalten Sie eine Anfrage per HTTP-Kommunikation
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
[Java] So schneiden Sie eine Zeichenfolge zeichenweise aus
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
So konvertieren Sie eine Datei in ein Byte-Array in Java
Zusammenfassung der Implementierung von Standardargumenten in Java
[Java] Anzeigen der von LocalDate und DateTimeformatter erfassten Tage auf Japanisch
In Anbetracht der Einführung der Java-Sprache in der Reiwa-Ära ~ Auswahl eines sicheren SDK
Wie man Arrays mit Java stapelweise initialisiert, wusste ich als Anfänger nicht
[Java] Ich habe versucht, ein Janken-Spiel zu erstellen, das Anfänger auf der Konsole ausführen können
Eine kurze Zusammenfassung der Java 8-Datums- / Uhrzeit-APIs, die wahrscheinlich häufig verwendet werden
Ich habe ein Rätsel ausprobiert, das nur von den unteren 10% der schlechten Ingenieure gelöst werden kann
Liste der Geräte, die mit Swift UI in der Vorschau angezeigt werden können
Erstellen Sie eine JAR-Datei, die auf Gradle ausgeführt werden kann
Speichern von Zeichenfolgen von ArrayList zu Zeichenfolge in Java (Personal)
Einführung in Rakefile, die in ca. 10 Minuten durchgeführt werden kann
Suchen Sie eine Switch-Anweisung, die in einen Switch-Ausdruck konvertiert werden kann
So wählen Sie ein bestimmtes Datum anhand des Codes im FS-Kalender aus
Java (Super Beginner Edition), das in 180 Sekunden verstanden werden kann
Dinge, die Sie beim Schreiben von Code in Java beachten sollten
So entwickeln und registrieren Sie eine Sota-App in Java
So simulieren Sie das Hochladen von Post-Object-Formularen in OSS in Java
So leiten Sie den letzten Tag des Monats in Java ab
Java - So erstellen Sie JTable
Referenznotiz / In-Memory-LDAP-Server, der in Java eingebettet werden kann
So erstellen Sie eine JAR-Datei ohne Abhängigkeiten in Maven
So erstellen Sie ein neues Gradle + Java + Jar-Projekt in Intellij 2016.03
So bedienen Sie automatisch einen in Java unter Windows erstellten Bildschirm
So erhalten Sie die ID des automatisch inkrementierten PRIMAY-Schlüssels in MyBatis
Verwandeln Sie ein Array von Strings in eine Liste von Ganzzahlen in Java
So benennen Sie ein Modell mit externen Schlüsseleinschränkungen in Rails um
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
So geben Sie eine Liste von Zeichenfolgen in JSF als durch Kommas getrennte Zeichenfolgen aus
So identifizieren Sie den Pfad, auf dem leicht Fehler gemacht werden können
Mecab-Installation, die fast durch Eingabe eines Befehls erfolgen kann
Der Operator, der geboren wurde, um geboren zu werden, instanceof (Java) ~ So verwenden Sie den instanceof-Operator ~