Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hey Leute, bitte helft mir, ich bin echt am verzweifeln:(

Ich möchte in Java den Hex- String den ich in eine Datei gespeichert habe,mit dem textField2 vergleichen. also ich gebe den Hex-String in textField2 ein und dann soll verglichen werden, ob die beiden übereinstimmen. (Nachher soll er den Hex-String aus der Datei in den String wieder umwandeln und den eigentlichen String vergleichen)... Das ganze soll als Passwortprüfung dienen. Hier mal das actionEvent vom Button und die beiden methoden, ist mit Netbeans erstellt:

    private void button1ActionPerformed(java.awt.event.ActionEvent evt) {

        // TODO add your handling code here:

        String zeile = null ;

    try{

            String text = textField1.getText();

            String hash = byteArrayToHexString(testfensterHash.computeHash(text));

            String dateiName = "C:/Test/MDtest.txt";

            FileOutputStream schreibeStrom =

                     new FileOutputStream(dateiName);

            for (int i=0; i < hash.length(); i++){

            schreibeStrom.write((byte)hash.charAt(i));


    }

             System.out.println("Datei ist geschrieben!");

            System.out.println("the computed hash (hex string) : " + hash);

    }

    catch (Exception e){

      e.printStackTrace();

    }

    try {

		BufferedReader in = new BufferedReader(new FileReader("C:/Test/MDtest.txt"));


		while ((zeile = in.readLine()) != null) {

		System.out.println("Gelesene Zeile: " + zeile);

		}

	} catch (IOException e) {

		e.printStackTrace();

	}

    if((textField2.getText().equals(zeile))) // <--   hier das Problem 

    { System.out.println("textfield2 und gelesene datei sind gleich");}

    else{System.out.println("fail");}

    }

//------------------------------------------------------------------------------------------------

   public static void main(String args[]) {

        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {

                new testfensterHash().setVisible(true);

            }

        });

    }

      public static byte[] computeHash(String x)

  throws Exception

  {

     java.security.MessageDigest d =null;

     d = java.security.MessageDigest.getInstance("MD5");

     d.reset();

     d.update(x.getBytes());

     return  d.digest();

  }


  public static String byteArrayToHexString(byte[] {

     StringBuffer sb = new StringBuffer(b.length * 2);

     for (int i = 0; i < b.length; i++){

       int v = b[i] & 0xff;

       if (v < 16) {

         sb.append('0');

       }

       sb.append(Integer.toHexString(v));

     }

     return sb.toString().toUpperCase();

  }

[/code]

Über andere Methoden oder Verfahren, wie ich das realisieren kann wär ich auch sehr dankbar ......

Ich dreh langsam echt durch und kann google nicht mehr sehen :(

Ich hoffe ihr habt verstanden, was ich machen möchte

Lg freeway86

Bearbeitet von freeway86
etwas vergessen

Nachher soll er den Hex-String aus der Datei in den String wieder umwandeln und den eigentlichen String vergleichen

Da Du im Code mit einem MD5 Hash arbeitest, ist es unmöglich aus dem Hash wieder den Originalwert zu gewinnen Hashfunktion ? Wikipedia

Ich hoffe ihr habt verstanden, was ich machen möchte

Nicht wirklich. Um ein gehashtes Passwort zu vergleichen, vergleichst Du nur die Hashes, sind diese identisch kannst Du davon ausgehen, dass die ungehashten Phrasen identisch sind, obwohl das mathematisch nicht so sein muss.

Vielen lieben Danke für deine schnelle Antwort.

Ich versuche mich besser auszudrücken, hier der code für mein eigentliches programm, das davor war nur ne test app. In der Datei MdTest hat er mir die eingabe des buchstaben "a" als: 0CC175B9C0F1B6A831C399E269772661

ausgegeben.

wenn ich in das tfPass jetz genau diesen wert reinschreibe, müsste er doch eigentlich das if ausführen, oder ?!

    private void butOkActionPerformed(java.awt.event.ActionEvent evt) {                                      

        // TODO add your handling code here:


        Object zeile = null;

if ((tfName.getText().equals("a"))) { //hier später select username from tabUsername

                try {

                    BufferedReader in = null;

                    in = new BufferedReader(new FileReader("C:/Test/MDtest.txt"));

                                                        //hier später select passwort from tabPasswort

                    while ((zeile = in.readLine()) != null) {

                        System.out.println("Gelesene Zeile: " + zeile);

                    }

                }  catch (IOException e) {

                    e.printStackTrace();

                }             

if ((tfPass).equals(zeile)) {  // ich kann es nicht vergleichen 

                System.out.println(zeile);

                ArchivAuswahl archivauswahl = new ArchivAuswahl();

                archivauswahl.setVisible(true);

                this.setVisible(false);

            }

else{

JOptionPane.showMessageDialog(butOk, "Bitte gültiges Passwort eingeben !");}

}

else {

    JOptionPane.showMessageDialog(butOk, "Bitte gültigen Benuternamen eingeben !");

}

    }[/code]

Noch mal ein pic um das zu verdeutlichen wass ich möchte

post-69866-14430448626745_thumb.jpg

danach soll das fenster des eigentlichen programmes erscheinen

Lg freeway86

wenn ich in das tfPass jetz genau diesen wert reinschreibe, müsste er doch eigentlich das if ausführen, oder ?!

In Deinem Code ist nicht ersichtlich welchen Wert die Variable tfPass hat. Wenn tfPass das Passwort aus der GUI enthält, dann steht dort der Klartext des Passwortes drin und wie schon gesagt, Du musst die Hashs vergleichen!

Ok ....

denne gehts wieder zurück in die weiten Welten des google :(

neues Stichwort: "Hashvergleich"

Ich danke dir für deine schnellen Antworten und werde bestimmt bald nen neues Prob haben ;)

Lg Freeway

denne gehts wieder zurück in die weiten Welten des google :(

neues Stichwort: "Hashvergleich"

Ich bezweifle, dass Du etwas passendes finden wirst.

Denk einmal nach, in Deinem GUI Element (ich schätze eine Textbox) steht ein String, dieser steht dort im Klartext und Du hast nun irgendwo den gleichen String als Hash stehen.

Also welche Schritte musst Du nun durchführen, um das Klartextpasswort mit dem Hash zu vergleichen, Du weißt, dass Du aus einem Hash nicht mehr den Originalstring, also das Passwort, zurückrechnen kannst?

Also welche Schritte musst Du nun durchführen, um das Klartextpasswort mit dem Hash zu vergleichen, Du weißt, dass Du aus einem Hash nicht mehr den Originalstring, also das Passwort, zurückrechnen kannst?

Wink mit dem ganzen Zaun :D

ja steht in einem text feld ... 1.ich muss also das klarwort in nen hash umwandeln...= DONE 2.dann das klarwort,welches zum hash umgewandelt wurde mit dem hash aus der db (bzw. noch textdatei) ableichen ,irgendwas mit if textfeld1.gethash().equals(select passwort from TabellePasswort) ....? Oder???

Ähh ich seh grad, dass nen textfiel keinen textfield.gethash() zulässt !!! also wie dann?

Bearbeitet von freeway86

klingt doch schonmal nicht schlecht. Probier es doch mal aus.

Wenns funktioniert... wunderbar.

Wenn nicht... nachfragen

wie kann ich mir den das dann abholen?!

ich komm nicht drauf

Hab doch erbamen und gib mir einen tip :(

Bearbeitet von freeway86

:e@sy

*kuss*

läuft.... hätte ich nie gefunden :( wie haste das gefunden

:e@sy

*kuss*

Achtung flashpixx - du hast nen neuen Verehrer :D

if ((tfPass).equals(zeile)) {

if(tfPass instanceof TextField){

your Code is Bull****. Use getText().

}

Wie auch immer. In deinem zuerst geposteten Code wird die Datei zeilenweise gelesen. Die Zeilen werden aber nicht verarbeitet sondern einfach nur ausgegeben. Lediglich die allerletzte zeile (die auch einfach nur ein "" sein kann verarbeitest du. Gib dir doch einfach mal die direkt vor deinem if die Werte von tfPass.getText und zeile aus).

Vom Dateinamen her lässt sich vermuten, dass in der Datei Hashes gespeichert sind und keine Passwörter im Klartext. Aber du vergleichst es offensichtlich mit einem Passwort im Klartext. Wie soll das jemals gleich sein?

Zusatz: Mit einem FileReader liest du eine Datei unter beachtung eines bestimmten charsets ein. Mit FileOutputStream schreibst du lediglich eine bestimmte bytefolge stur raus. Wenn du beides mischst kanns passieren, dass du mal auf die Nase fällst weil dein FileReader die bytes eben interpretiert anstatt sie so zu nehmen wie sie sind.

Merke: FileOutputStream und FileInputStream arbeiten mit Dateien stur binär. FileWriter und FileReader verwenden Charsets.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.