Dans certains cas, comme JWT, vous souhaitez signer et vérifier à l'aide de la clé publique / privée sur le serveur. Je pense que le côté bibliothèque JWT fournit une méthode pour créer une paire de clés, mais si vous l'utilisez, une paire de clés sera générée chaque fois que vous démarrez l'application. Si vous ne pouvez pas désactiver le JWT précédemment émis à chaque démarrage, vous utiliserez une paire de clés fixe.
De nos jours, ECDSA semble être utilisé plus souvent que RSA car il est plus petit et a le même niveau de cryptage.
Créez au format pem.
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
la clé privée est
----- BEGIN PRIVATE KEY -----
, ----- END PRIVATE KEY -----
et couper le code de saut de ligneimport 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 -----
et découper le code de saut de ligneString 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