Class Cryptography


  • public class Cryptography
    extends java.lang.Object
    Diese Klasse stellt einige statische Methoden für häufig verwendete kryptografische Aufgaben bereit.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.String createPKCS10​(java.lang.String subject, java.security.PublicKey publickey, java.security.PrivateKey privatekey)
      Erstellt einen PKCS#10-Antrag.
      static java.lang.String createPKCS10​(java.lang.String subject, java.security.PublicKey publickey, java.security.PrivateKey privatekey, java.lang.String provider)
      Erstellt einen neuen PKCS#10-Antrag und liefert diesen im PEM-Format.
      static java.lang.String createPKCS7Encrypted​(byte[] data, java.security.cert.X509Certificate[] certs)
      Erstellt einen PKCS#7-Container, der die Daten aus data mit allen öffentlichen Schlüsseln aus den Zertifikaten certs verschlüsselt.
      static java.lang.String createPKCS7Signed​(byte[] text, java.security.PrivateKey privatekey, java.security.cert.X509Certificate certificate)
      Erstellt ein PKCS#7 Container mit einer losglösten (detached) Signatur über text.
      static byte[] decryptPKCS7​(java.lang.String base64, java.security.cert.X509Certificate cert, java.security.PrivateKey key)
      Entschlüsselung mit dem Standardprovider SunJCE.
      static byte[] decryptPKCS7​(java.lang.String base64, java.security.cert.X509Certificate cert, java.security.PrivateKey key, java.lang.String provider)
      Entschlüsselt die in einen PKCS#7-Container eingebetteten verschlüsselten Daten.
      static java.security.cert.X509Certificate getCertificateFromPEM​(java.lang.String pem)
      Erstellt ein X509Certificate-Objekt aus einem PEM-Zertifikat.
      static java.security.cert.X509Certificate getFirstCertificateWithKeyFormPKCS12​(java.lang.String filename, java.lang.String password)
      Liefert das erste Zertifikat aus einer PKCS#12-Datei, zu dem ein privater Schlüssel existiert.
      static java.security.PrivateKey getFirstKeyFormPKCS12​(java.lang.String filename, java.lang.String password)
      Liefert den ersten privaten Schlüssel, der in einer PKCS#12-Struktur gefunden wird.
      static java.lang.String getPEMFromCertificate​(java.security.cert.X509Certificate cert)
      Wandelt ein Zertifikatobjekt in das PEM-Format um.
      static java.security.KeyPair getPrivateKey​(byte[] key)
      Wandelt einen privaten Schlüssel in ein Java-Object um.
      static java.lang.String sha1​(byte[] input)
      Kalkuliert einen SHA1 Hash-Wert für input.
      static java.lang.String sha1​(byte[] input, java.lang.String bytesSeparator, boolean upperCase)
      Kalkuliert einen SHA1 Hash-Wert für input und liefert diesen in angegebener Formatiertung.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • createPKCS10

        public static java.lang.String createPKCS10​(java.lang.String subject,
                                                    java.security.PublicKey publickey,
                                                    java.security.PrivateKey privatekey)
                                             throws java.security.NoSuchAlgorithmException,
                                                    java.security.NoSuchProviderException,
                                                    java.security.InvalidKeyException,
                                                    java.security.SignatureException,
                                                    java.io.IOException,
                                                    org.bouncycastle.operator.OperatorCreationException
        Erstellt einen PKCS#10-Antrag. Der Provider für die Selbstsignatur des Antrags ist hier "SunRsaSign".
        Parameters:
        subject - Subject DN
        publickey - Öffentlicher Schlüssel
        privatekey - Privater Schlüssel
        Returns:
        PKCS#10-Antrag im PEM-Format
        Throws:
        java.security.NoSuchAlgorithmException - Fehlerweiterleitung
        java.security.NoSuchProviderException - Fehlerweiterleitung
        java.security.InvalidKeyException - Fehlerweiterleitung
        java.io.IOException - Fehlerweiterleitung
        java.security.SignatureException - Fehlerweiterleitung
        org.bouncycastle.operator.OperatorCreationException - Fehlerweiterleitung
        See Also:
        createPKCS10(java.lang.String, java.security.PublicKey, java.security.PrivateKey, java.lang.String)
      • createPKCS10

        public static java.lang.String createPKCS10​(java.lang.String subject,
                                                    java.security.PublicKey publickey,
                                                    java.security.PrivateKey privatekey,
                                                    java.lang.String provider)
                                             throws java.security.NoSuchAlgorithmException,
                                                    java.security.NoSuchProviderException,
                                                    java.security.InvalidKeyException,
                                                    java.security.SignatureException,
                                                    java.io.IOException,
                                                    org.bouncycastle.operator.OperatorCreationException
        Erstellt einen neuen PKCS#10-Antrag und liefert diesen im PEM-Format. Benötigt werden dazu ein öffentlicher und ein privater Schlüssel, sowie der Subject DN als String. Erweiterte Attribute in dem Antrag (z.B. Alias-Namen) werden momentan nicht unterstützt. Diese können aber über die Methode DFNCERTPublic als Parameter übergeben werden. Die Selbstsignatur des Antrags wird mit SHA256withRSA erstellt. Wenn SHA256withRSA nicht vom Provider unterstützt wird, wird SHA1withRSA verwendet.
        Parameters:
        subject - Subject DN
        publickey - Öffentlicher Schlüssel
        privatekey - Privater Schlüssel
        provider - Provider für PKCS#10-Signatur, null für Standard
        Returns:
        PKCS10-Antrag im PEM Format
        Throws:
        java.security.NoSuchAlgorithmException - Fehlerweiterleitung
        java.security.NoSuchProviderException - Fehlerweiterleitung
        java.security.InvalidKeyException - Fehlerweiterleitung
        java.security.SignatureException - Fehlerweiterleitung
        java.io.IOException - Fehlerweiterleitung
        org.bouncycastle.operator.OperatorCreationException - Fehlerweiterleitung
      • sha1

        public static java.lang.String sha1​(byte[] input)
                                     throws java.security.NoSuchAlgorithmException
        Kalkuliert einen SHA1 Hash-Wert für input. Liefert den Wert als hexadezimalen String in Kleinbuchstaben.
        Parameters:
        input - Eingabedaten
        Returns:
        SHA1 Hash-Eert als hexadezimaler String, Kleinbuchstaben
        Throws:
        java.security.NoSuchAlgorithmException - Fehlerweiterleitung
      • sha1

        public static java.lang.String sha1​(byte[] input,
                                            java.lang.String bytesSeparator,
                                            boolean upperCase)
                                     throws java.security.NoSuchAlgorithmException
        Kalkuliert einen SHA1 Hash-Wert für input und liefert diesen in angegebener Formatiertung.
        Parameters:
        input - Eingabedaten
        bytesSeparator - Delimiter zwischen einzelnen Bytes (z.B. ":")
        upperCase - Großbuchstaben?
        Returns:
        Hashwert als Hex-ASCII
        Throws:
        java.security.NoSuchAlgorithmException - Fehlerweiterleitung
      • createPKCS7Signed

        public static java.lang.String createPKCS7Signed​(byte[] text,
                                                         java.security.PrivateKey privatekey,
                                                         java.security.cert.X509Certificate certificate)
                                                  throws java.security.NoSuchAlgorithmException,
                                                         java.security.cert.CertStoreException,
                                                         org.bouncycastle.cms.CMSException,
                                                         java.security.NoSuchProviderException,
                                                         java.security.InvalidAlgorithmParameterException,
                                                         java.io.IOException,
                                                         org.bouncycastle.operator.OperatorCreationException,
                                                         java.security.cert.CertificateEncodingException
        Erstellt ein PKCS#7 Container mit einer losglösten (detached) Signatur über text. Dabei wird der angegebene private Schlüssel privatekey verwendet und das zugehörige Zertifikat certificate als Unterzeichner-Zertifikat mit in die PKCS#7-Struktur eingebunden. Das Ergebnis wird im PEM-Format geliefert.
        Parameters:
        text - Zu signierende Daten
        privatekey - Unterschrift Privater Schlüssel
        certificate - Unterschrift Zertifikat
        Returns:
        Signatur im PEM-Format
        Throws:
        java.security.NoSuchAlgorithmException - Fehlerweiterleitung
        java.security.cert.CertStoreException - Fehlerweiterleitung
        org.bouncycastle.cms.CMSException - Fehlerweiterleitung
        java.security.NoSuchProviderException - Fehlerweiterleitung
        java.security.InvalidAlgorithmParameterException - Fehlerweiterleitung
        java.io.IOException - Fehlerweiterleitung
        org.bouncycastle.operator.OperatorCreationException - Fehlerweiterleitung
        java.security.cert.CertificateEncodingException - Fehlerweiterleitung
      • createPKCS7Encrypted

        public static java.lang.String createPKCS7Encrypted​(byte[] data,
                                                            java.security.cert.X509Certificate[] certs)
                                                     throws java.security.NoSuchAlgorithmException,
                                                            java.security.NoSuchProviderException,
                                                            org.bouncycastle.cms.CMSException,
                                                            java.io.IOException,
                                                            java.security.cert.CertificateEncodingException
        Erstellt einen PKCS#7-Container, der die Daten aus data mit allen öffentlichen Schlüsseln aus den Zertifikaten certs verschlüsselt.
        Parameters:
        data - Zu verschlüsselnde Daten
        certs - Empfänger-Zertifikate
        Returns:
        PKCS#7 im PEM-Format
        Throws:
        java.security.NoSuchAlgorithmException - Fehlerweiterleitung
        java.security.NoSuchProviderException - Fehlerweiterleitung
        org.bouncycastle.cms.CMSException - Fehlerweiterleitung
        java.io.IOException - Fehlerweiterleitung
        java.security.cert.CertificateEncodingException - Fehlerweiterleitung
      • decryptPKCS7

        public static byte[] decryptPKCS7​(java.lang.String base64,
                                          java.security.cert.X509Certificate cert,
                                          java.security.PrivateKey key)
                                   throws org.bouncycastle.cms.CMSException,
                                          java.lang.Exception
        Entschlüsselung mit dem Standardprovider SunJCE.
        Parameters:
        base64 - PKCS#7-Struktur im PEM-Format
        cert - Entschlüsselungszertifikat
        key - Entschlüsselungsschlüssel
        Returns:
        Entschlüsselte Daten
        Throws:
        org.bouncycastle.cms.CMSException - Fehlerweiterleitung
        java.lang.Exception
        See Also:
        decryptPKCS7(java.lang.String, java.security.cert.X509Certificate, java.security.PrivateKey, java.lang.String)
      • decryptPKCS7

        public static byte[] decryptPKCS7​(java.lang.String base64,
                                          java.security.cert.X509Certificate cert,
                                          java.security.PrivateKey key,
                                          java.lang.String provider)
                                   throws org.bouncycastle.cms.CMSException,
                                          java.lang.Exception
        Entschlüsselt die in einen PKCS#7-Container eingebetteten verschlüsselten Daten. Der richtige Schlüssel wird dabei anhand der Seriennummer und des Ausstellers des Entschlüsselungszertifikats ermittelt.
        Parameters:
        base64 - PKCS#7 in DER-Format
        cert - Zertifikat des Entschlüsselers
        key - PrivateKey des Entschlüsselers
        provider - Zu verwendender Kryptoprovider, z.B. "SunJCE"
        Returns:
        entschlüsselte Daten
        Throws:
        org.bouncycastle.cms.CMSException - Fehlerweiterleitung
        java.lang.Exception
      • getCertificateFromPEM

        public static java.security.cert.X509Certificate getCertificateFromPEM​(java.lang.String pem)
                                                                        throws java.security.cert.CertificateException,
                                                                               java.io.IOException
        Erstellt ein X509Certificate-Objekt aus einem PEM-Zertifikat. Die Eingabe muss im PEM-Format mit Header (BEGIN CERTIFICATE) und Footer (END CERTIFICATE) erfolgen.
        Parameters:
        pem - Zertifikat im PEM-Format
        Returns:
        Zertifikatobjekt
        Throws:
        java.security.cert.CertificateException - Fehlerweiterleitung
        java.io.IOException - Fehlerweiterleitung
      • getPEMFromCertificate

        public static java.lang.String getPEMFromCertificate​(java.security.cert.X509Certificate cert)
                                                      throws java.io.IOException
        Wandelt ein Zertifikatobjekt in das PEM-Format um.
        Parameters:
        cert - Eingabezertifikat
        Returns:
        Ausgabe im PEM-Format
        Throws:
        java.io.IOException - Fehlerweiterleitung
      • getPrivateKey

        public static java.security.KeyPair getPrivateKey​(byte[] key)
                                                   throws java.io.IOException
        Wandelt einen privaten Schlüssel in ein Java-Object um.
        Parameters:
        key - Eingabe als Byte-Array
        Returns:
        Schlüsselobject
        Throws:
        java.io.IOException - Fehlerweiterleitung
      • getFirstKeyFormPKCS12

        public static java.security.PrivateKey getFirstKeyFormPKCS12​(java.lang.String filename,
                                                                     java.lang.String password)
                                                              throws java.security.KeyStoreException,
                                                                     java.io.FileNotFoundException,
                                                                     java.io.IOException,
                                                                     java.security.NoSuchAlgorithmException,
                                                                     java.security.cert.CertificateException,
                                                                     java.security.UnrecoverableKeyException
        Liefert den ersten privaten Schlüssel, der in einer PKCS#12-Struktur gefunden wird. Dazu werden die Alias-Namen in der Reihenfolge ihres Auftretens durchlaufen und der erste Eintrag, der einen Schlüssel enthält zurückgeliefert. Falls kein privater Schlüssel gefunden wurde, wird null zurückgegeben.
        Parameters:
        filename - Dateiname der PKCS#12-Datei
        password - Passwort der PKCS#12-Datei
        Returns:
        Erster gefundener privater Schlüssel
        Throws:
        java.security.KeyStoreException - Fehlerweiterleitung
        java.security.cert.CertificateException - Fehlerweiterleitung
        java.io.FileNotFoundException - Fehlerweiterleitung
        java.security.UnrecoverableKeyException - Fehlerweiterleitung
        java.security.NoSuchAlgorithmException - Fehlerweiterleitung
        java.io.IOException
      • getFirstCertificateWithKeyFormPKCS12

        public static java.security.cert.X509Certificate getFirstCertificateWithKeyFormPKCS12​(java.lang.String filename,
                                                                                              java.lang.String password)
                                                                                       throws java.security.KeyStoreException,
                                                                                              java.io.FileNotFoundException,
                                                                                              java.io.IOException,
                                                                                              java.security.NoSuchAlgorithmException,
                                                                                              java.security.cert.CertificateException
        Liefert das erste Zertifikat aus einer PKCS#12-Datei, zu dem ein privater Schlüssel existiert. Dazu werden alle Alias-Namen durchlaufen und das erste Zertifikat, zu dem ein Schlüssel gehört, zurückgegeben.
        Parameters:
        filename - Dateiname der PKCS#12-Datei
        password - Passwort der PKCS#12-Datei
        Returns:
        Erstes Zertifikat zu dem ein privater Schlüssel existiert
        Throws:
        java.security.KeyStoreException - Fehlerweiterleitung
        java.io.FileNotFoundException - Fehlerweiterleitung
        java.io.IOException - Fehlerweiterleitung
        java.security.NoSuchAlgorithmException - Fehlerweiterleitung
        java.security.cert.CertificateException - Fehlerweiterleitung