Einzelnen Beitrag anzeigen

Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#1

Ansistring zu Unicodestring (UTF16LE)

  Alt 10. Feb 2011, 23:44
Bei der Anmeldung an der Fritzbox wird ein Response benötigt, für welchen die Challenge mit dem Password zu einem UTF16LE formatierten String und der daraus resultierende MD5Hash wiederum mit der Challenge verbunden wird:

aResponse := FSession.Challenge + '-' + MD5Hash(AnsiToUtf16(Format('%s-%s', [FSession.Challenge, FPassword]))); Die Function
Delphi-Quellcode:
function AnsiToUtf16(const aStr: AnsiString): WideString;
var
  len : integer;
  codePage : Word;
begin
  codePage := CP_ACP;
  len := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@aStr[1]), - 1, nil, 0);
  SetLength(Result, len - 1);
  if len > 1
  then MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@aStr[1]), - 1, PWideChar(@Result[1]), len - 1);
end;
liefert wohl ein UTF16BE, aber kein UTF16LE. Der Versuch, jedes Char mit einem #0 zu ergänzen, hat nicht funktioniert.

Gibt es eine Lösung ohne auf ein neues Delphi updaten zu müssen?
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat