...tja, das hatte ich zunächst auch gehofft, funktioniert aber nicht. Die Konstante wird als "Salz" zum Crypten eines Passworts genutzt, dass dann in eine "Altbackende"-DBF Tabelle geschrieben wird, die nur
ANSI kann. Aus dieser wird der Hash dann auch gelesen und über eine Compare-Funktion (und wiederum der Konstante) geprüft. Hier hatte ich dann rausgefunden, dass der aus der Datenbank gelesene Wert (noch unter Delphi7) nicht mehr mit dem zu vergleichenden Wert (Delphi2009) übereinstimmt:
Delphi-Quellcode:
const
//CS_PWD_PREFIX: AnsiString = #67#12#8#9#133#201#253#15#8;
CS_PWD_PREFIX = Chr(67) + Chr(12) + Chr(8) + Chr(9) + Chr(133) + Chr(201) + Chr(253) + Chr(15) + Chr(8);
begin
Result := xpBuildChecksum(Format('%d%s', [UserID, CS_PWD_PREFIX + Password]));
end;
Die auskommentierte Zeile funktioniert nicht, die darunterliegende geht!
Gruß,
kaju