Beispielcode für elektronische Signatur (JAVA)

Beispielprogramm


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;

/**
 *Beispiel zum Signieren und Überprüfen der Signatur mit ECDSA 160bit
 */
public class ECDSASignature {

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

        /**
         *Schlüsselpaar ausgeben
         */
        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();        
        
        //Zur Zeit nur eine Zeichenkette
        String hako = "Qiita ist ein technischer Informationsaustauschdienst für Programmierer.";
        
        /**
         *Mit privatem Schlüssel signieren (ECDSA 160bit)
         */
        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);
        }
        
        /**
         *Überprüfen Sie die Signatur mit dem öffentlichen Schlüssel
         */
        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 ? "Unterschreiben Sie OK" : "Zeichen NG");
            
        } catch (NoSuchAlgorithmException | InvalidKeyException | SignatureException e) {
            Logger.getLogger(ECDSASignature.class.getName()).log(Level.SEVERE, null, e);
        }
        
    }

}

Ausführungsergebnis


sign:(Weggelassen)
Unterschreiben Sie OK

Recommended Posts

Beispielcode für elektronische Signatur (JAVA)
Java-Beispielcode 02
Java-Beispielcode 03
Java-Beispielcode 04
Java-Beispielcode 01
Java Parallel Code Sample Collection
Java 9 neue Funktionen und Beispielcode
Beispielcode mit Minio aus Java
Führen Sie Java-Code skriptweise aus
Java-Code-TIPPS
[Java] Generics-Beispiel
Selenprobe (Java)
Java GUI Beispiel
Java-Zeichencode
Apache Beam Beispielcode
[Java] Beispiel für ein Urlaubsurteil
[Java] logback slf4j Beispiel
Beispielcode zum Konvertieren von List in List <String> in Java Stream
Beispielcode für die Protokollausgabe von Java + SLF4J + Logback
Sammlung von Java-Testcode-Methoden
[Windows] Java-Code ist verstümmelt
Beispielcode zum Parsen von Datum und Uhrzeit mit Java SimpleDateFormat
Java mit Visual Studio Code
Beispiel für eine Java-Standardprotokollausgabe
Schreiben Sie Java8-ähnlichen Code in Java8
Selenium Musterbuchungsformular (Java)
Implementieren Sie die XML-Signatur in Java
So verwalten Sie Java-Code, der automatisch von jOOQ & Flyway generiert wird
Beispielcode zum Aufrufen der Yahoo! Local Search API in Java
Beispielcode mit JMustache, der Moustache-Vorlagen-Engine in Java
Errate den Zeichencode in Java
Code Java von Emacs mit Eclim
Java Spring-Umgebung in vs Code
Informationen zur Signaturauthentifizierung mit Java Time 1
[Java] Eliminierung des Kesselplattencodes mit Lombok
Erstellen Sie Java mit Mac vs Code
Beliebiger Code zum Erstellen von Zeichenfolgen durch Java
Führen Sie gepackten Java-Code mit Befehlen aus
Ein einfaches Beispiel für Rückrufe in Java
Java-Quellcode zum Lesen der Klasse java.lang.Math
[Java] Eliminierung des Kesselplattencodes mit Lombok 2
BloomFilter-Beschreibungs- und Implementierungsbeispiel (JAVA)
[Java] Beispiel für eine Überprüfung des Datumszeitraums
Beispiel für eine EXCEL-Dateiaktualisierung mit JAVA
Java-Entwicklungsumgebung (Mac, VS Code)
[Android] Konvertieren Sie Android Java-Code in Kotlin
Beispielautomat mit Java
Grundstruktur des Java-Quellcodes
Beispielcode zum Abrufen der wichtigsten JDBC-Typwerte in der Java + H2-Datenbank
Beispielcode zum Serialisieren und Deserialisieren von Java Enum-Enumerationen und JSON in Jackson
Java EE 8 (unter Verwendung von NetBeans IDE 8.2) ab Beispielcode Teil 1 Umgebungskonstruktion
Mindestkonfigurationsbeispiel für die automatische Freigabe von Lambda durch Java mit Code-Pipeline