public void signAndSaveMessage(String message) {

        // die Nachricht als Byte-Array
        byte[] msg = message.getBytes();
        Signature rsaSig = null;
        byte[] signature = null;
        try {
            // als Erstes erzeugen wir das Signatur-Objekt
            rsaSig = Signature.getInstance("SHA1withRSA");
            // zum Signieren benoetigen wir den privaten Schluessel (hier: RSA)
            rsaSig.initSign(keyPair.getPrivate());
            // Daten fuer die kryptographische Hashfunktion (hier: SHA1) liefern
            rsaSig.update(msg);
            // Signatur durch Verschluesselung des Hashwerts (mit privatem RSA-Schluessel) erzeugen
            signature = rsaSig.sign();
        } catch (NoSuchAlgorithmException ex) {
            showErrorAndExit("Keine Implementierung fuer SHA1withRSA!", ex);
        } catch (InvalidKeyException ex) {
            showErrorAndExit("Falscher Schluessel!", ex);
        } catch (SignatureException ex) {
            showErrorAndExit("Fehler beim Signieren der Nachricht!", ex);
        }

        // der oeffentliche Schluessel vom Schluesselpaar
        PublicKey pubKey = keyPair.getPublic();
        // wir benoetigen die Default-Kodierung
        byte[] pubKeyEnc = pubKey.getEncoded();
        System.out
                .println("Der Public Key wird in folgendem Format gespeichert: "
                        + pubKey.getFormat());

        try {
            // eine Datei wird erzeugt und danach die Nachricht, die Signatur
            // und der oeffentliche Schluessel darin gespeichert
            DataOutputStream os = new DataOutputStream(new FileOutputStream(
                    fileName));
            os.writeInt(msg.length);
            os.write(msg);
            os.writeInt(signature.length);
            os.write(signature);
            os.writeInt(pubKeyEnc.length);
            os.write(pubKeyEnc);
            os.close();
        } catch (IOException ex) {
            showErrorAndExit("Fehler beim Schreiben der signierten Nachricht.", ex);
        }
        // Bildschirmausgabe
        System.out.println("Erzeugte SHA1/RSA-Signatur: ");
        for (int i = 0; i < signature.length; ++i) {
            System.out.print(toHexString(signature[i]) + " ");
        }
        System.out.println();
    }