use zxcvbn::{ feedback::{Suggestion, Warning}, Entropy, }; pub fn generate_for_entropy(entropy: &Entropy) -> String { let feedback = entropy.feedback().unwrap(); let warning = match feedback.warning() { Some(Warning::StraightRowsOfKeysAreEasyToGuess) => { "Gerade Linien von Tasten auf der Tastatur sind leicht zu erraten." } Some(Warning::ShortKeyboardPatternsAreEasyToGuess) => { "Kurze Tastaturmuster sind leicht zu erraten." } Some(Warning::RepeatsLikeAaaAreEasyToGuess) => { "Sich wiederholende Zeichen wie 'aaa' sind leicht zu erraten." } Some(Warning::RepeatsLikeAbcAbcAreOnlySlightlyHarderToGuess) => { "Sich wiederholende Zeichenmuster wie 'abcabcabc' sind leicht zu erraten." } Some(Warning::ThisIsATop10Password) => "Dies ist ein sehr häufig verwendetes Passwort.", Some(Warning::ThisIsATop100Password) => "Dies ist ein häufig verwendetes Passwort.", Some(Warning::ThisIsACommonPassword) => "Dies ist ein oft verwendetes Passwort.", Some(Warning::ThisIsSimilarToACommonlyUsedPassword) => { "Dieses Passwort weist Ähnlichkeit zu anderen, oft verwendeten Passwörtern auf." } Some(Warning::SequencesLikeAbcAreEasyToGuess) => { "Häufige Zeichenfolgen wie 'abc' oder '1234' sind leicht zu erraten." } Some(Warning::RecentYearsAreEasyToGuess) => { "Die jüngsten Jahreszahlen sind leicht zu erraten." } Some(Warning::AWordByItselfIsEasyToGuess) => "Einzelne Wörter sind leicht zu erraten.", Some(Warning::DatesAreOftenEasyToGuess) => "Ein Datum ist leicht zu erraten.", Some(Warning::NamesAndSurnamesByThemselvesAreEasyToGuess) => { "Einzelne Namen oder Nachnamen sind leicht zu erraten." } Some(Warning::CommonNamesAndSurnamesAreEasyToGuess) => { "Vornamen und Nachnamen sind leicht zu erraten." } _ => "Passwort ist zu schwach.", }; let vorschlag_text = if feedback.suggestions().len() > 1 { "Vorschläge" } else { "Vorschlag" }; let suggestion = feedback .suggestions() .iter() .map(|s| { let inner = match s { Suggestion::UseAFewWordsAvoidCommonPhrases => "Mehrere Wörter verwenden, aber allgemeine Phrasen vermeiden.", Suggestion::NoNeedForSymbolsDigitsOrUppercaseLetters => "Es ist möglich, starke Passwörter zu erstellen, ohne Symbole, Zahlen oder Großbuchstaben zu verwenden.", Suggestion::AddAnotherWordOrTwo => "Weitere Wörter, die weniger häufig vorkommen, hinzufügen.", Suggestion::CapitalizationDoesntHelpVeryMuch => "Nicht nur den ersten Buchstaben groß schreiben.", Suggestion::AllUppercaseIsAlmostAsEasyToGuessAsAllLowercase => "Einige, aber nicht alle Buchstaben groß schreiben.", Suggestion::ReversedWordsArentMuchHarderToGuess => "Umgekehrte Schreibweise von gebräuchlichen Wörtern vermeiden.", Suggestion::PredictableSubstitutionsDontHelpVeryMuch => "Vorhersehbare Buchstabenersetzungen wie '@' für 'a' vermeiden.", Suggestion::UseALongerKeyboardPatternWithMoreTurns => "Längere Tastaturmuster in unterschiedlicher Tipprichtung verwenden.", Suggestion::AvoidRepeatedWordsAndCharacters => "Wort- und Zeichenwiederholungen vermeiden.", Suggestion::AvoidSequences => "Häufige Zeichenfolgen vermeiden.", Suggestion::AvoidRecentYears => "Die jüngsten Jahreszahlen vermeiden.", Suggestion::AvoidYearsThatAreAssociatedWithYou => "Jahre, die mit persönlichen Daten in Verbindung gebracht werden können, vermeiden.", Suggestion::AvoidDatesAndYearsThatAreAssociatedWithYou => "Daten, die mit persönlichen Daten in Verbindung gebracht werden können, vermeiden.", }; format!("
{warning}
{vorschlag_text}: