Bouncycastle Signaturen anhängen

Diskutiere Bouncycastle Signaturen anhängen im Allgemeine Java-Themen Forum; Hallo, gibt es eine möglichkeit eine Datei zu Signieren und diese Datei in Klarschrift dann anzeigen zu lassen ?

  1. Novaa
    Novaa Neues Mitglied
    Hallo,
    gibt es eine möglichkeit eine Datei zu Signieren und diese Datei in Klarschrift dann anzeigen zu lassen ?
     
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. VfL_Freak
    VfL_Freak Bekanntes Mitglied
    Moin,
    bitte was?? :eek: verstehe nur Bahnhof ... :confused:

    Wo welcher Datei spricht Du ??
    Was meinst Du mit 'Klarschrift' ??

    Gruß Klaus
     
  4. Kababär
    Kababär Aktives Mitglied
    Welche Signatur willst du denn verwenden?
    Die Datei kannst du entschlüsseln, indem du den eindeutigen Public Key verwendest (denn es geht hier um Integrität).

    Edit: Wobei für gewöhnlich nur ein Hashwert signiert (verschlüsselt) wird. Die Datei an sich wird dabei nicht verschlüsselt.
     
  5. Novaa
    Novaa Neues Mitglied
    Danke für die Antworten :)
    Ich füge mal meinen Code hinzu damit Ihr es ein bisschen nachvollziehen könnt. Eigentlich möchte ich nur das die Datei signiert wird und dann einen Schreibschutz erhält.
    Code (Text):
    public class FileSignature {
        static final String KEYSTORE_FILE = "KeyStoreDemo.p12";
        static final String KEYSTORE_INSTANCE = "pkcs12";
        static final String KEYSTORE_PWD = "demo";
        static final String KEYSTORE_ALIAS = "test";

        public void SignatureFile() throws Exception {

            File file = new File("zugferdXmlToDB2.map");
            FileInputStream stream = new FileInputStream(file);
            byte data[] = new byte[(int) file.length()];
            stream.read(data);
         
            Security.addProvider(new BouncyCastleProvider());
            KeyStore ks = KeyStore.getInstance(KEYSTORE_INSTANCE);

            ks.load(new FileInputStream(KEYSTORE_FILE), KEYSTORE_PWD.toCharArray());

            Key key = ks.getKey(KEYSTORE_ALIAS, KEYSTORE_PWD.toCharArray());

            if ( key instanceof PrivateKey ) {
                // Build CMS
                Certificate cert = ks.getCertificate(KEYSTORE_ALIAS);

                DSAPrivateKey keyPriv = (DSAPrivateKey) key;
                DSAPublicKey keyPub = (DSAPublicKey) cert.getPublicKey();

                byte[] digitalSignature = signData(data, keyPriv);

                boolean verified;

                verified = verifySig(data, keyPub, digitalSignature);

                if ( verified ){
                    writeSignedFile(digitalSignature, file);
                }
            }
         
        }

        public static byte[] signData(byte[] data, PrivateKey Key) throws Exception {

            Signature signer = Signature.getInstance("SHA1withDSA");
            signer.initSign(Key);
            signer.update(data);
            return ( signer.sign() );
        }

        public static boolean verifySig(byte[] data, PublicKey Key, byte[] sig) throws Exception {
            Signature signer = Signature.getInstance("SHA1withDSA");
            signer.initVerify(Key);
            signer.update(data);
            return ( signer.verify(sig) );
        }

        private void writeSignedFile(byte[] digitalSignature, File file) throws IOException {
            FileOutputStream output = new FileOutputStream("test/" + file);
            output.write(digitalSignature);
            output.close();
        }

    }
    Als Export erhalte ich das 0,>ÌÔæ.ý+À\O ©®˜ÖùjuH°ª¦<©»òÓº g@³÷«
     
  6. Kababär
    Kababär Aktives Mitglied
    Als Export wohin? Und womit öffnest du es? Daten sind alle nur bytes. Es obliegt den Programmen wie diese zu interpretieren sind. Deshalb kann es sein, dass es auf den ersten Moment nicht verschlüsselt oder einfach falsch wirkt.
    Normalerweise erstellst du einen Hash und signierst diesen, nicht die ganze Datei.
    Und Schreibschutz erhälst du dadurch nicht. Eher um Datenschutz im weiteren Sinne, also Integrität.
     
  7. Novaa
    Novaa Neues Mitglied
    Erstmal zu deinen Fragen die Datei soll in das Alte Datei Format die Datei öffne ich mit notepad++. Wie bekomme ich das den hin nur einen Hash zu signieren und diesen dann der Datei hinzuzufügen ?
     
  8. Novaa
    Novaa Neues Mitglied
    Sry für die umständliche Schreibweise
    • Datei wird anschließend im .map Format gespeichert (xml)
    • Die Datei öffne ich momentan mit Notepad++
    • Datei soll am Ende nur Lesbar gemacht werden
    • Signatur soll in einer .p7s Datei stehen und die Signierten Daten liegen in einer anderen Datei
    Wie müsste ich das Programm abändern damit das richtig funtioniert ? Wenn ich die Byte Daten mit .hashcode abrufe geht das nicht. Da die .update Methode von Signature nur Byte [] zulässt. Gibt es eine Funktion von Bouncycastle die das kann?

    Ich hoffe ihr könnt mir weiterhelfen :)
     
    Zuletzt bearbeitet: 29. Nov. 2016
  9. Kababär
    Kababär Aktives Mitglied
    Wieso BouncyCastle? Bist du an diese Bib gebunden?

    Für das Erstellen einer Signatur gibt es mehrere Verfahren. Ich denke du solltest dir erstmal klar darüber werden, welches Verfahren du verwenden willst.

    Und nochmal: signieren ist nicht das gleiche wie verschlüsseln!
    Wenn du verschlüsseln willst, guck dir Chiphre, AES, RSA, etc an.
     
  10. Novaa
    Novaa Neues Mitglied
    Es soll nichts verschlüsselt werden. Es soll einfach der Inhalt signiert werden und die Signatur in eine p7s Datei exportiert werden.
    Könntest du mir sagen wie ich das hinbekomme
     
    Zuletzt bearbeitet: 29. Nov. 2016
  11. Kababär
    Kababär Aktives Mitglied
    Ah, jetzt hab ich auch mal verstanden was du eigentlich willst.

    Hmmm ne direkte Lösung gebe ich dir nicht, aber mal einen Link zum Lesen:
    https://docs.oracle.com/javase/tutorial/security/apisign/step3.html

    Über Google findet man doch dutzende Ergebisse. Die extension einer Datei ist nur eine extension und Daten sind nur Bytes. Einfach heißt das: die Signatur einfach in die Datei schreiben.

    Edit: Da ich aber denke, dass aus meiner Antwort kein Schuh wird, gebe ich dir mal einen Link, der dir auch so noch bisschen was erklärt (hab das Gefühl du bist mit der Theorie noch nicht so ganz vertraut), denn das ist mir jetzt zu viel zum Schreiben und ich denke das tuts einfach:
    https://www.google.de/amp/s/mydevel...how-to-generate-pkcs7-signatures-in-java/amp/
    Falls du dann noch Fragen hast, kannst du gerne Fragen :)
     
Die Seite wird geladen...

Bouncycastle Signaturen anhängen - Ähnliche Themen

Bedeutung von Methodensignaturen und Aufrufverhalten
Bedeutung von Methodensignaturen und Aufrufverhalten im Forum Java Basics - Anfänger-Themen
Lustige Signaturen
Lustige Signaturen im Forum Plauderecke
Problem mit digitalen Signaturen auf Web Service Seite
Problem mit digitalen Signaturen auf Web Service Seite im Forum SOA
Einfaches zulassen von Signaturen
Einfaches zulassen von Signaturen im Forum Deployment
Die fiestesten Sprüche für Signaturen
Die fiestesten Sprüche für Signaturen im Forum Plauderecke
Thema: Bouncycastle Signaturen anhängen