Hallo hagen,
danke für deine antwort, dann war meine methode also doch schonmal gar nicht so schlecht
Zitat:
wenn auch deine Impelemntierung ziemlich unkonvetionell bzw. umständlich ist.
kein wunder habe ich mir schließlich ausgedacht
ich habe da dann noch ein paar fragen zu deinem code (arbeite noch nicht lange mit delphi)
Zitat:
Delphi-Quellcode:
var
Hash: THash;
Counter: Cardinal;
Register: array[0..19] of Byte;
begin
SetLength(Result, Length(Value)); //ich vermute mal, dass Value ein wert ist der
//der funktion übergeben wird oder der global ist?
Hash := THash_SHA1.Create;
try
Hash.Init;
Hash.Calc(Password[1], Length(Password));
Hash.Done;
for Counter := 1 to Length(Value) do
begin
Move(Hash.DigestKey^, Register, SizeOf(Register)); // was bewirkt move hier genau und was macht dieses zeichen "^"?
Hash.Init; // warum muss man init mehrmal aufrufen?
// wird dadurch ein wert wieder zurückgesetzoder so ?
Hash.Calc(Counter, Sizeof(Counter)); //wird hier der hash von counter an den von register angehängt oder
Hash.Calc(Register, SizeOf(Register)); // werden sie erst verbunden und dann gehasht ?
Hash.Done; // wie wird der hash vom passwort in diesen hash mit einbezogen?
Byte(Result[Counter]) := Byte(Value[Counter]) xor PByte(Hash.DigestKey)^; //was bewirkt byte und pbyte?
end;
finally
Hash.Free;
end;
Result := StrToFormat(PChar(Result), Lenght(Result), fmtHEX); // was macht strtoformat? das finde ich in der hilfe nicht
end;
ich hab die fragen mal als kommentare in den code eingefügt. ich hoffe es sind nicht zu viele
freue mich schon auf die antworten
gruß,
david