Stringfunktionen Char.IsSymbol()



  • Hallo zusammen,

    ich weiß nicht ob ich hier im richtigen Forum bin. Ich soll derzeit für einige Softwaremodule eine Passwortüberprüfung schreiben. Dazu soll sich an folgendem Artikel orientiert werden:
    Password Strength Control
    Die dort verwendeten Methoden basieren auf C#. Leider sind die meisten Anwendungen in C++ oder C geschrieben, sodass ich versucht habe, den Quellcode nach C zu übersetzen. Das ist mir weitestgehend auch gelungen, jedoch weiß ich derzeit nicht, welche Ersetzung ich für die Methode

    System.Char.IsSymbol()
    

    nehmen kann. Die Methodenbezeichnung Char.IsSymbol Method verweist auf Unicode-Zeichenklassen. Leider habe ich nicht verstanden, wie man das unter C/C++ realisieren soll. Hier habe ich zumindest keine Entsprechung gefunden. Kann mir da jemand weiterhelfen?


  • Mod

    @AndyDD sagte in Stringfunktionen Char.IsSymbol():

    u

    Klingt nach "hat eine grafische Darstellung" minus alphanumerische Zeichen. Da es, wie die Anleitung schon sagt, nur eine vage Kategorie ist, ist es sicherlich nicht super wichtig, das ganz exakt nachzubilden.

    Mein Mitleid schon einmal an alle zukünftigen Nutzer deines Passwortsystems. Zeichenkategoriepasswortregeln sind sowas von 1990er…



  • Char.IsSymbol beschreibt, daß es sich um die vier Unicode Symbol-Kategorien "MathSymbol, CurrencySymbol, ModifierSymbol, OtherSymbol" handelt.
    Eine Liste dieser findest du z.B. unter Unicode Character Categories (beim Klicken auf die Unterkategorien mußt du dann noch jeweils "List" aufrufen, um die vollständige Zeichenliste zu erhalten).

    Ich würde aber auch so wie @SeppJ vorgehen und einfach 'Symbol' als alle darstellbaren Nicht-alphanumerischen Zeichen interpretieren (für C bzw. C++ also iswgraph(c) && !iswalnum(c)).



  • Erst mal vielen Dank für die schnelle Antwort. Das mit iswgraph(c) && !iswalnum(c) leuchtet mir jetzt ein und wäre auch mein Notansatz gewesen. Habe jetzt eine Tabelle gefunden, die das noch mal so wiederspiegelt.
    @SeppJ : "Mein Mitleid schon einmal an alle zukünftigen Nutzer deines Passwortsystems. Zeichenkategoriepasswortregeln sind sowas von 1990er…" - das sehe ich erst mal genauso. Was du wissen musst: wir sind in der Medizintechnik tätig und müssen unsere Software nach GAMP 5 validieren. Derjenige, der die finale Freigabe macht möchte das so haben. Also:
    min. Passwortlänge 8 Stellen, aus Buchstaben, Ziffern, Groß- und Kleinschreibung, Sonderzeichen 3 Merkmale, keine Pattern, kein Vorname, Nachname, Anmeldename als Bestandteil. Und die Härte: Passwortlebensdauer 40 Tage sowie keine Übereinstimmung mit den letzten 3 Passwörtern. Das ist echt überholt aber wenn wir es nicht umsetzen gibts keine Freigabe. Habe erst kürzlich einen Artikel gelesen, wo stand, dass die Vergrößerung der Anzahl der Zeichen mehr bringt als Groß-/Kleinschreibung, Sonderzeichen etc.


  • Mod

    @AndyDD sagte in Stringfunktionen Char.IsSymbol():

    min. Passwortlänge 8 Stellen, aus Buchstaben, Ziffern, Groß- und Kleinschreibung, Sonderzeichen 3 Merkmale, keine Pattern, kein Vorname, Nachname, Anmeldename als Bestandteil. Und die Härte: Passwortlebensdauer 40 Tage sowie keine Übereinstimmung mit den letzten 3 Passwörtern. Das ist echt überholt aber wenn wir es nicht umsetzen gibts keine Freigabe. Habe erst kürzlich einen Artikel gelesen, wo stand, dass die Vergrößerung der Anzahl der Zeichen mehr bringt als Groß-/Kleinschreibung, Sonderzeichen etc.

    So ist es. Unsafe by design, denn nun ist jeder Nutzer gezwungen, ein einfaches 7-Zeichen Passwort zu haben, mit einem 8. Zeichen, dass er alle 40 Tage um 1 hochzählt. Aber ich verstehe schon von woher du kommst mit der Zertifizierung. Kein Vorwurf an dich, sondern Mitleid.


Log in to reply