Nur ist da jetzt die Idee, dieselbe Methode auch mit normalem string für das zu hashende Passwort anzubieten
und da komme ich etwas ins schleudern. Delphi's string ist ja UTF16 und soweit ich weiß auch Strings in Java, richtig?
Ich dachte (hab's noch nicht getestet), dass da andere Testdaten nötig wären, weil der string ja binär anders codiert ist.
Die interne Darstellung eines Strings innerhalb einer Programmiersprache sollte keinen Einfluss auf das Ergebnis der Verschlüsselung haben. Ob ich ein Passwort als ShortString, AnsiString oder WideString angebe, sollte immer auf den gleichen Hash hinaus laufen. Ansonsten wäre das Verfahren vollkommen unbrauchbar. Deswegen würde ich auch nicht RawByteString verwenden, weil das immer noch diese String Notation verwendet, sondern immer mit TBytes arbeiten. Der Algorithmus arbeitet ja auch mit Zahlen (Bytes) und nicht mit Buchstaben.
Ja und nein: es ist für den BCrypt scheinbar nirgends definiert, wie Zeichen in ein Byte-Format mit dem der Algorithmus dann sicherlich intern arbeitet konvertiert werden. Und an der Stelle ist es dann halt schon relevant, wie der String intern codiert ist,
da man ja von den eingegebenen Zeichen irgendwie zu den Bytes kommen muss...
Das ist bei RawByteString string ja relativ einfach, aber beim normalen string würde was anderes als Hash raus kommen, weil es intern
anders repräsentiert wird.
Einfach mal angenommen das Passwort wäre 'A' dann kommt einmal 0x41 raus und im Fall des normalen strings 0x00 0x41.
Oder was verstehe ich hier falsch?