Kryptographie in Java. Signaturklasse

Hallo Habr! Ich präsentiere Ihnen die Übersetzung des fünften Artikels "Java Signature" von Jakob Jenkov aus einer Reihe von Artikeln für Anfänger , die die Grundlagen der Kryptographie in Java erlernen möchten.


Inhaltsverzeichnis:


  1. Java-Kryptographie
  2. Java-Chiffre
  3. Messagedigest
  4. Mac
  5. Unterschrift
  6. Schlüsselpaar
  7. Schlüsselgenerator
  8. KeyPairGenerator
  9. Keystore
  10. Keytool
  11. Zertifikat
  12. CertificateFactory
  13. CertPath

Java-Signatur


Die Signaturklasse ( java.security.Signature ) erstellt eine digitale Signatur für Binärdaten. Eine digitale Signatur ist ein Message Digest, der mit dem privaten Schlüssel eines privaten / öffentlichen Schlüsselpaars verschlüsselt ist. Jeder, der den öffentlichen Schlüssel besitzt, kann die digitale Signatur überprüfen.


Erstellen Sie eine Signaturinstanz


Bevor Sie die Signature-Klasse verwenden können, müssen Sie diese Klasse instanziieren, indem Sie die statische Methode getInstance () aufrufen. Unten sehen Sie ein Beispiel, in dem eine Signaturinstanz erstellt wird:


Signature signature = Signature.getInstance("SHA256WithDSA"); 

Der an die Methode getInstance () übergebene Zeichenfolgenparameter bestimmt den verwendeten Verschlüsselungsalgorithmus für digitale Signaturen.


Initialisierung der Signaturinstanz


Nachdem Sie die Signaturinstanz erstellt haben, müssen Sie sie initialisieren, bevor Sie sie verwenden können. Die Signaturinstanz wird durch Aufrufen ihrer init () -Methode initialisiert. Ein Beispiel für die Initialisierung einer Java-Signaturinstanz:


 SecureRandom secureRandom = new SecureRandom(); KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA"); KeyPair keyPair = keyPairGenerator.generateKeyPair(); signature.initSign(keyPair.getPrivate(), secureRandom); 

Wie Sie sehen, wird die Signaturinstanz mit dem privaten Schlüssel des geheimen / öffentlichen Schlüsselpaars und der SecureRandom-Instanz initialisiert.


Erstellung digitaler Signaturen


Wenn die Signaturinstanz initialisiert ist, können Sie damit digitale Signaturen erstellen. Eine digitale Signatur wird erstellt, indem die update () -Methode (einmal oder mehrmals) aufgerufen und mit einem Aufruf von sign () beendet wird . Beispiel für die Erstellung einer digitalen Signatur für Binärdaten:


 byte[] data = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); signature.update(data); byte[] digitalSignature = signature.sign(); 

Überprüfung der digitalen Signatur


Wenn Sie eine von einer anderen Person erstellte digitale Signatur überprüfen möchten, müssen Sie die Signaturinstanz im Überprüfungsmodus (anstelle des Signaturmodus) initialisieren. So sieht die Initialisierung einer Signaturinstanz im Validierungsmodus aus:


 Signature signature = Signature.getInstance("SHA256WithDSA"); signature.initVerify(keyPair.getPublic()); 

Beachten Sie, dass die Signaturinstanz jetzt im Überprüfungsmodus initialisiert wird und der öffentliche Schlüssel des Schlüsselpaars als Parameter übergeben wird. Nach der Initialisierung im Überprüfungsmodus können Sie die digitale Signatur mithilfe der Signaturinstanz überprüfen:


 byte[] data2 = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); signature2.update(data2); boolean verified = signature2.verify(digitalSignature); 

Source: https://habr.com/ru/post/de445330/


All Articles