[CryptoPP] SHA1-Hash von wstring erstellen



  • Hi,

    der Input ist ein vom User eingegebenes Passwort. Das kann natürlich Sonderzeichen und Umlaute enthalten.
    Da muss man doch wstring nehmen, oder hab ich da was falsch verstanden?

    Gruß



  • sizeof( inp ) liefert dir die Größe des Zeigers, nicht die Länge der Eingabedaten. Du suchst die Länge des wstrings in Bytes.



  • Raven280438 schrieb:

    Hi,

    der Input ist ein vom User eingegebenes Passwort. Das kann natürlich Sonderzeichen und Umlaute enthalten.
    Da muss man doch wstring nehmen, oder hab ich da was falsch verstanden?

    Gruß

    Nö. Per UTF-8 lassen sich Umlaute auch in 8bit chars codieren.



  • Ethon schrieb:

    Nö. Per UTF-8 lassen sich Umlaute auch in 8bit chars codieren.

    Ok, und wie muss ich vorgehen, um das Projekt auf UTF8 umzustellen?
    (ich arbeite mit Code::Blocks)

    Gruß



  • Reicht es schon, wenn ich in den Editor-Optionen das Datei-Encoding auf UTF8 stelle?
    Eine andere Einstellung hab ich nicht gefunden...

    Gruß



  • Im Endeffekt ist es ein Implementierungsdetail, aber du kannst zu 99% davon ausgehen, dass normale char Strings UTF-8 sind.

    char const* str = "äöü";
    assert(std::strlen(str) == 6);
    

    Denn ein Umlaut benötigt UTF-8 codiert 2 Bytes. DEswegen lässt es sich auch nicht vernünftig per printf/cout ausgeben.



  • Ethon schrieb:

    Im Endeffekt ist es ein Implementierungsdetail, aber du kannst zu 99% davon ausgehen, dass normale char Strings UTF-8 sind.

    Ist denn der Windows Anteil schon auf unter 1% zurückgegangen?



  • Womit werden denn sonst Narrowstrings auf Windowskisten codiert?



  • Ethon schrieb:

    Womit werden denn sonst Narrowstrings auf Windowskisten codiert?

    Windows-1252 bei mir.



  • Das was eingestellt ist, und per Default ist das auf vielen Maschinen CP 1252, aka. Windows-Variante-von-Latin-I.
    Bzw. eben die "passende" Windows Codepage für die Locale die beim Installieren eingestellt wurde.

    Man kann es soweit ich weiss manuell auf UTF-8 umstellen, nur meine ich mich zu erinnern dass es da diverse Warnungen gab, weil damit viele Programme Probleme haben, u.U. sogar welche die mit Windows mit installiert werden.

    Auf jeden Fall kann man sich als Programm nicht darauf verlassen dass UTF-8 eingestellt ist, weil es einfach quasi niemand eingestellt hat. Daher arbeiten unter Windows auch "alle" mit UTF-16 Strings, weil die von den ganzen OS Funktionen "native" unterstützt werden.


Anmelden zum Antworten