Cyborg Codesammelstelle

Moin. Ein kleines Projekt von mir, ich nenne es einfach „Password strength and generator“.

Es gibt eine kleine GUI, mit der man die Stärke seines Passworts (Entropie) überprüfen kann - oder ganz einfach 25 neue Passwörter erzeugen lassen kann.

Jar:

PasswordStrength-1.0.jar (748,9 KB)

Quelltext:

import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import me.gosimple.nbvcxz.Nbvcxz;
import me.gosimple.nbvcxz.resources.Generator;
import me.gosimple.nbvcxz.scoring.Result;

public class Main {
  public static void main(String[] args) {
    JLabel label1 = new JLabel("Enter password:");
    JTextField textField1 = new JTextField(20);
    JLabel label2 = new JLabel("Password strength:");
    JTextField textField2 = new JTextField(20);
    JLabel label3 = new JLabel("Generated password:");
    JButton button3 = new JButton("Generate password");
    JTextArea textArea3 = new JTextArea();
    fillArea(textArea3);
    textArea3.setFont(new Font("Monospaced", Font.PLAIN, 12));
    JPanel panel1 = new JPanel(new GridLayout(3, 2));
    panel1.add(label1);
    panel1.add(textField1);
    panel1.add(label2);
    panel1.add(textField2);
    panel1.add(label3);
    panel1.add(button3);
    JFrame frame = new JFrame("Password strength and generator");
    frame.add(panel1, BorderLayout.NORTH);
    frame.add(new JScrollPane(textArea3), BorderLayout.CENTER);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setVisible(true);

    textField1
        .getDocument()
        .addDocumentListener(
            new DocumentListener() {
              @Override
              public void insertUpdate(DocumentEvent e) {
                update();
              }

              @Override
              public void removeUpdate(DocumentEvent e) {
                update();
              }

              @Override
              public void changedUpdate(DocumentEvent e) {
                update();
              }

              private void update() {
                textField2.setText(resultToString(calculateStrength(textField1.getText())));
              }
            });
    button3.addActionListener(e -> fillArea(textArea3));
  }

  private static void fillArea(JTextArea area) {
    TreeMap<Double, TreeSet<String>> passwords = new TreeMap<>();
    for (int i = 0; i < 25; i++) {
      String p = generatePassword();
      Result r = calculateStrength(p);
      passwords
          .computeIfAbsent(
              r.getEntropy(),
              k ->
                  new TreeSet<>(
                      Comparator.comparingInt(String::length).thenComparing(String::compareTo)))
          .add(p);
    }
    StringBuilder sb = new StringBuilder("Generated Passwords:\n");
    int i = 1;
    for (TreeSet<String> list : passwords.values()) {
      for (String s : list) {
        sb.append(String.format("%02d. ", i++))
            .append(s)
            .append(" - ")
            .append(resultToString(calculateStrength(s)))
            .append("\n");
      }
    }
    area.setText(sb.toString());
    area.setCaretPosition(0);
  }

  private static Result calculateStrength(String password) {
    // With all defaults...
    Nbvcxz nbvcxz = new Nbvcxz();
    return nbvcxz.estimate(password);
  }

  private static String resultToString(Result result) {
    return String.format("%d/%f", result.getBasicScore(), result.getEntropy());
  }

  private static final Random RANDOM = new Random();

  private static String generatePassword() {
    int len = RANDOM.nextInt(5) + 12;
    return Generator.generateRandomPassword(Generator.CharacterTypes.ALPHANUMERIC, len);
  }
}

@Marco13 Bekomm’ ich vielleicht eine eigene Kategorie?

1 „Gefällt mir“

Kann ich nicht machen, glaub’ ich.

@eagleeye : Wollen wir eine Kategorie machen, wie z.B.
Planlos zusammengemüllte Kotschnipsel, die jemand als 'Projekt' bezeichnet
?

Das wäre doch was. Sowas gibt es sonst nirgends.

3 „Gefällt mir“

@Marco13 Ich muss meine Projekte hier nicht kostenlos anbieten… Schon gut…

Dein Vorschlag hört sich aber ein bisschen so :fu: für mich an. :confused:

(Beitrag vom Verfasser gelöscht)

(Beitrag vom Verfasser gelöscht)

:smirk:

Wird erledigt.

Hab’ zumindest mal einen eigenen Thread daraus gemacht, damit alle dein Meisterwerk bewundern können.

1 „Gefällt mir“

ich finds immer wieder faszinierend wie jemand über eine so lange Zeit keinerlei Fortschritt zeigt

Hmja. Manchmal sehe ich alten Code von mir (und mit „alt“ meine ich >15 Jahre), und da gibt’s ja dann zwei Möglichkeiten:

  • ‚Meine Güte, was hab‘ ich da für’n Mist zusammengepfuscht?!’ oder
  • ‚Joa, würd‘ ich heute noch so ähnlich machen…’

Ich denke oft letzteres. Aber … ich hab’ vor 15 Jahren schon keine Fields/Variablen mehr textField1 genannt, also … *räusper*… das ist wohl *händewedel* von verschiedenen Faktoren abhängig :smiley:

1 „Gefällt mir“

Wieso nicht? In dem Kontext angemessen. textFieldWithAnyNameThatIThinkOfSpontaneouslyAndThatSoundsGreat ist einfach nur mental clutter, eine Verschlimmbesserung, der alles in die Länge zieht, und dabei den kognitiven Aufwand erheblich erhöht.

Aber ich muss mich hier eigentlich nicht rechtfertigen, wenn ich nur angegiftet werde.

Die beiden Beiträge vor 7 Tagen wollte ich eigentlich noch zurückziehen, weil ich es nicht so gemeint hatte, aber ich konnte nur einen Beitrag innerhalb von 24h löschen, und deine Sperr-Reaktion war schneller.

Ganz allgemein bin ich nicht der Meinung, dass man keinen Code in Foren mehr posten können sollte, der vernünftig ist. Stattdessen soll man alles umständlich, umgangssprachlich und falsch umschreiben… pfui.

Ich würde dir ja zugutehalten, dass du das mit dieser Meinung artikulierte Ziel so vorbildlich selbst verfolgst - geradezu ein Musterbeispiel dafür geliefert hast - aber … ich stimme nicht mit dem Ziel überein.

Der Code, den du gepostet hast, ist

schlecht

auf jeder Ebene, in jeder Hinsicht, und du solltest dich dafür schämen.

Mehr, als zu versuchen, deinen Strom von Müll-Codeschnipseln in diesem Thread hier zu kanalisieren, kann (bzw. will) ich gerade nicht machen - zumindest nicht hinausgehend über die gelegentlich eingesteuten Sperrungen.

Marco13, jetzt mal ehrlich … du erinnerst mich ein wenig(!) an einen alten Chef von mir … der konnte auch nicht programmieren, aber hatte immer das Sagen.

Damals hab ich mir gesagt, mich nicht mehr gängeln zu lassen. Dabei bleib’ ich auch. :sweat_smile:

naja er hats immerhin geschafft Chef zu sein, du kannst einfach nur nix

Na ja, eigentlich ist das nur die Spitze des Eisbergs gewesen … ich wurde auch in einen Raum voller Azubis gesteckt, und du kannst dir vermutlich denken, wie das ausging …

Und ich hab nicht per se etwas dagegen, dass jemand Chef ist.

Dieses „Projekt“ ist eine hemdsärmelige Klasse, die du kackfrech um GitHub - GoSimpleLLC/nbvcxz: Password strength estimator drumgewickelt hast, was du hier ohne Lizenzangabe als „dein eigenes Werk“ verbreitest.

Und alles an dieser Klasse ist

schlecht!

Das solltest du inzwischen wissen. Das sage ich dir. Das sagt eagleeye dir. Das wird dir jeder sagen, der auch nur einen Hauch von Ahnung von Swing hat. Und es ist nichts, wo du auch nur ansatzweise ein Gegenargument nennen kannst.

1 „Gefällt mir“

wie man sieht hast du die Chance nicht genutzt um etwas von denen zu lernen

1 „Gefällt mir“

Hab ich irgendetwas verschleiert? Nein. Das ist ein ganz normaler Wrapper, wie 1000 andere auch. Also beruhig dich wieder.

Aber wenn euch perfekter Code stört, dann muss das Thema eben gelöscht werden. Ende.

Das Problem war eher, dass ich der einzige dort war der programmieren konnte.^^ Aber … Schwamm drüber.

Also zufällig sind wir Zeitzeugen deiner Errungenschaften der letzten 20 Jahre… :wink:

Und so wie du heute programmierst „„Programme“ „schreibst““ ( so viele Anführungszeichen kann ich da gar nicht reinmachen, wie es notwendig wäre), so hast du auch vor 20 Jahren gemacht…

Und möglicherweise wärst du damit erstmal einem gemeinen Azubi von vor 20 Jahren im klaren Vorteil und man könnte behaupten du wärst der einzige, der da was schreiben kann…

Aber nun schauen wir mal Azubis an, die damals eine Ausbuldung gemacht haben… Wenn da einer schlechter ist als du, dann fresse ich ein Besen…

Von daher ist nicht so klar, was du denkst mit dieser „Scharade“ anzustellen, da alle hier im Forum wissen, dass das einfach nur getextet ist und irgendwie ein wenig Second Life imitieren soll ;).

Wenn du wirklich jemanden überzeugen willst, dann fange vielleicht bei dir selber an. Und statt die ganze Zeit in den Foren umzutrollen, fang doch einfach in der Zeit sinnvoll zu nutzen und lerne actually das, was du hier trollst. Die Zeit wäre viel besser investiert.


Zwei Anmerkungen dazu:

Wirkt recht witzig, wenn man einen Quellcode hier sieht :wink:

Also: Ich denke du hast 0 Recht dazu, den Quellcode von anderen zu bewerten.

Ne, das soll hier einfach mal stehen bleiben und weitere Codeschnipsel sollten hier samt Diskussion zusammengeführt werden. Dann kann man super von externen Foren hierdrauf verlinken und man muss nicht alle Postings hin und her suchen.

Deine Leistung besteht aus wenigen Zeilen Müllcode, und darin, die Arbeit, die andere geleistet haben, als „dein Projekt“ darzustellen. Es ist zwar allgemein bekannt, dass „Trolling“ im wesentlichen daraus besteht, sich sehr, sehr, sehr dumm zu stellen. Aber bei dir muss ich davon ausgehen, dass die gnadenlose, leistungsungebundene Selbstsicherheit, die du hier an den Tag legst, wirklich Dummheit ist.

Oder anders: Ich verachte dich entweder, weil du unsere Zeit mit solchem nervtötenden Scheißdreck verschwendest. Oder ich verachte dich dafür, dass du meinst, der Müll, den du hier fabrizierst, wäre es wert, geteilt zu werden.

Egal, wie man es dreht und wendet, du kannst dir nur einer Sache sicher sein: Meiner tiefen, ehrlichen Verachtung. (Und ich weiß, dass es paradox ist, dir das zu sagen. Ich mach’ das nur, damit andere dieses kleine Herzchen unter diesem Beitrag klicken, weil das meine einzige Dopaminquelle ist :slightly_smiling_face: )

2 „Gefällt mir“

Hatte erst einen Schreck und den Eindruck, martin123 aka oxide hätte psychische Probleme, so wie es in dem anderen Forum anklang … aber … da ist der Troll ja wieder. :sweat_smile:

Noch mal … wenn das Thema sooo nervig ist, dann muss es eben weg.

Und was ich im Kindergarten gemacht oder nicht gemacht habe, ist wohl egal (meist saß ich in einer Ecke und hab mir die Ohren zugehalten, weil alle anderen blöd waren).

Und Marco13 … wirklich … lass dein Dopamin untersuchen … zu viel oder zu wenig davon sollte Anlass zur Sorge geben. Blutdruck und Zucker am besten auch gleich mit.

So, schlaft gut. :bed: