Hallo,
gegeben ist Code mit dieser Struktur:
Delphi-Quellcode:
type
TDECHashClass = class of TDECHash;
TDECHash = class
public
class function IsPasswordHash: Boolean;
end;
TDECPasswordHash = class(TDECHash)
public
class function GetMaxSaltLength:UInt16; virtual; abstract;
end;
THash_BCrypt = class(TDECPasswordHash)
public
class function GetMaxSaltLength:UInt16; override;
end;
[..]
var
Hash: TDECHashClass;
begin
// beschaffe die Klassenreferenz der ausgewählten Klasse aus einer
// Liste aller registrierten Klassen
Hash := ClassRegistration.GetHashClass('BCrypt');
// Hier knallt es:
if Hash.IsPasswordHash and (TDECPasswordHash(Hash).GetMaxSaltLength > 0) then
Mir ist klar warum es knallt. TDECPasswordHash implementiert die GetMaxSaltLength
Klassenmethode ja nicht, sondern erst die davon erbende THash_BCrypt.
Nur: wie an diese rann kommen, wenn man nur eine TDECHashClass Klassenreferenz
von der BCrypt Klasse aus der Registrierungsliste bekommt?
Grüße
TurboMagic