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.
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
----- BEGIN PRIVATE KEY -----
, ----- END PRIVATE KEY -----
und schneiden Sie den Zeilenvorschubcodeimport 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
----- BEGIN PUBLIC KEY -----
, ----- END PUBLIC KEY -----
und kürzen Sie den ZeilenvorschubcodeString 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);
Recommended Posts