Exemple de code de signature électronique (JAVA)

Exemple de programme


import java.security.InvalidKeyException;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Signature;
import java.security.SignatureException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *Échantillon pour effectuer la vérification de la signature et de la signature avec ECDSA 160 bits
 */
public class ECDSASignature {

    public static void main(String argv[]){
        signatureTest();
    }
    
    public static void signatureTest(){

        /**
         *Émettre une paire de clés
         */
        KeyPairGenerator keyPairGenerator = null;
        try {
            keyPairGenerator = KeyPairGenerator.getInstance("EC");
        } catch (NoSuchAlgorithmException ex) {
            return;
        }
        SecureRandom secureRandom = new SecureRandom();
        keyPairGenerator.initialize(160, secureRandom);
        KeyPair pair = keyPairGenerator.generateKeyPair();
        Key publicKey = pair.getPublic();
        Key privateKey = pair.getPrivate();        
        
        //Pour le moment, juste une chaîne de caractères
        String hako = "Qiita est un service de partage d'informations techniques pour les programmeurs.";
        
        /**
         *Signer avec une clé privée (ECDSA 160 bits)
         */
        byte[] sign = null;
        try {
            Signature signatureSign = null;
            signatureSign = Signature.getInstance("NONEwithECDSA");
            signatureSign.initSign((PrivateKey)privateKey, secureRandom);
            signatureSign.update(hako.getBytes());
            sign = signatureSign.sign();
            
            System.out.println("sign: " + new String(sign));

        } catch (InvalidKeyException | NoSuchAlgorithmException | SignatureException ex) {
            Logger.getLogger(ECDSASignature.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        /**
         *Vérifier la signature avec la clé publique
         */
        Signature signatureVerify = null;
        try {
            signatureVerify = Signature.getInstance("NONEwithECDSA");
            signatureVerify.initVerify((PublicKey)publicKey);
            signatureVerify.update(hako.getBytes());
            boolean verifyResult = signatureVerify.verify(sign);
            System.out.println(verifyResult ? "Signer OK" : "Signer NG");
            
        } catch (NoSuchAlgorithmException | InvalidKeyException | SignatureException e) {
            Logger.getLogger(ECDSASignature.class.getName()).log(Level.SEVERE, null, e);
        }
        
    }

}

Résultat d'exécution


sign:(Omis)
Signer OK

Recommended Posts

Exemple de code de signature électronique (JAVA)
Exemple de code Java 02
Exemple de code Java 03
Exemple de code Java 04
Exemple de code Java 01
Collection d'exemples de code parallèle Java
Nouvelles fonctionnalités de Java 9 et exemple de code
Exemple de code utilisant Minio de Java
Exécuter du code Java de manière scriptée
CONSEILS relatifs au code Java
[Java] Exemple de génériques
Échantillon de sélénium (Java)
Exemple d'interface graphique Java
Code de caractère Java
Exemple de code Apache beam
[Java] Exemple de jugement de vacances
[Java] exemple de logback slf4j
Exemple de code pour convertir List en List <String> dans Java Stream
Exemple de code pour la sortie du journal par Java + SLF4J + Logback
Collection de méthodes de code de test Java
[Windows] Le code Java est déformé
Exemple de code pour analyser la date et l'heure avec SimpleDateFormat de Java
Java avec Visual Studio Code
Exemple de sortie de journal standard Java
Écrire du code de type Java8 en Java8
Formulaire de réservation d'échantillons de sélénium (Java)
Implémenter la signature XML en Java
Comment gérer le code Java généré automatiquement par l'exemple jOOQ et Flyway
Exemple de code pour appeler l'API Yahoo! Local Search en Java
Exemple de code utilisant JMustache, le moteur de modèles Moustache en Java
Devinez le code de caractère en Java
Coder Java depuis Emacs avec Eclim
Environnement Java Spring dans vs Code
À propos de l'authentification par signature avec Java Time 1
[Java] Élimination du code de plaque de chaudière à l'aide de Lombok
Construire Java avec Mac vs Code
Code de création de chaîne arbitraire par Java
Exécuter du code Java packagé avec des commandes
Un exemple simple de rappels en Java
Code source Java lecture de la classe java.lang.Math
[Java] Élimination du code de plaque de chaudière avec Lombok 2
Exemple de description et d'implémentation de BloomFilter (JAVA)
[Java] Exemple de contrôle de duplication de période de date
Exemple de mise à jour de fichier EXCEL avec JAVA
Environnement de développement Java (Mac, VS Code)
[Android] Convertir le code Java Android en Kotlin
Distributeur automatique d'échantillons fabriqué avec Java
Structure de base du code source Java
Exemple de code pour obtenir les valeurs de type JDBC clés dans la base de données Java + H2
Exemple de code pour la sérialisation et la désérialisation des énumérations Java Enum et JSON dans Jackson
Java EE 8 (utilisant NetBeans IDE 8.2) à partir de l'exemple de code Partie 1 Construction de l'environnement
Exemple de configuration minimale pour publier automatiquement Lambda par Java avec un pipeline de code