Signatur mit Public Key verifizieren
-
Hallo Community,
ich bin noch nicht lange bei der C++ Programmierung dabei, stoße aber schon früh auf Hindernisse. Ich hoffe Ihr könnt mir helfen.
Folgendes: Ich habe in Java ein Programm geschrieben, mit dem eine Txt-Datei signiert wird:
encKey = Base64.decode(private_key, Base64.DONT_BREAK_LINES); PKCS8EncodedKeySpec encodedKeySpec = new PKCS8EncodedKeySpec(encKey); KeyFactory keyFactory = KeyFactory.getInstance("DSA", "SUN"); privKey = keyFactory.generatePrivate(encodedKeySpec); Signature dsa = Signature.getInstance("SHA1withDSA", "SUN"); //Signaturobjekt wird mit dem PK initialisiert dsa.initSign(privKey); /////////////////////// String strLizenz = ""; FileReader fr2 = new FileReader(txtEncrypt.getText()); BufferedReader br2 = new BufferedReader(fr2); while((s = br2.readLine()) != null) { strLizenz += s; } fr2.close(); byte[] byteLizenz = strLizenz.getBytes(); len = byteLizenz.length; dsa.update(byteLizenz, 0, len); ////////////////////// byte[] realSig = dsa.sign(); //Signatur in Byteform -> String String strSignatur = Base64.encodeBytes(realSig); //Lizenzfile wird als String gelesen FileReader fr = new FileReader(Lizenzpfad); BufferedReader br = new BufferedReader(fr); while((s = br.readLine()) != null) { Sig += s + "\n"; } fr.close(); // String des Lizenzfiles wird mit dem String // der Signatur verknüpft Sig += "SIG=" + strSignatur + "\n"; //Signaturfile wird abgespeichert FileWriter fw = new FileWriter(txtEncrypt.getText()); fw.write(Sig); fw.close(); JOptionPane.showMessageDialog(null, "Signature erstellt.");
Mir ist klar das obiger Code nicht sauber ist, mir geht es eigentlich um folgendes.
Mein Problem ist nun das ich in C++ eine dll schreiben möchte, mit der man die Signatur mit dem Originalfile verifizieren kann. Die DLL steht schon soweit mit internem Public_Key zum verifizieren und die Originaldatei samt Signatur kann ich ebenfalls einlesen.
Nur leider habe ich keinen Plan wie ich es in C++ anstelle mithilfe des Public_Keys die Signatur mit dem Originalfile zu vergleichen? Hoffe ihr konntet mich soweit verstehen. Für Hilfe wäre ich sehr dankbar.
-
hi,
warum verwendest du nicht eine md5 checksum?
-
Hmmm weiss nicht so recht wie die Antwort gemeint ist. Problem ist halt das ich gegeben habe: eine DLL mit Public Key, den Originaltext und die Signatur. Inwiefern kann ich da mit MD5 was erreichen? Oder bezieht sich deine Antwort auf den Java-Teil?
Gruß
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
^^vielleicht kannst du dir was aus openSSL rauskopieren. ich glaube das kann auch mit pkcs#8 usw. umgehen. falls es unter windoofs laufen soll, kann's auch sein, das win das schon so kann. da frag am besten mal im winapi-forum. warum machst du die verifizierung nicht auch in java? das sollte viel einfacher gehen, als sich den ganzen kleinkram mit c++ selbst hinzufummeln.
-
Hab da auch schon was mit OpenSSL gefunden und werde das mal ausprobieren
Die Verifizerung mach ich auch ebenfalls schon in Java (funktioniert dort auch ohne Probleme), jedoch will ich auch eine dll dafür haben, deswegen der Aufwand. Danke schonmal für die Antworten.