Guten Abend,
Delphi-Quellcode:
procedure THash_SHA.DoTransform(Buffer: PUInt32Array);
var
A, B, C, D, E, T: UInt32;
W: array[0..79] of UInt32;
I: Integer;
begin
SwapUInt32Buffer(Buffer[0], W, 16);
if ClassType = THash_SHA then
begin
for I := 16 to 79 do
begin
T := W[I - 3] xor W[I - 8] xor W[I - 14] xor W[I - 16];
W[I] := T;
end;
end
else
begin
for I := 16 to 79 do
begin
T := W[I - 3] xor W[I - 8] xor W[I - 14] xor W[I - 16];
W[I] := T shl 1 or T shr 31;
end;
end;
wird hier nicht bei einer Klasse ungleich THash_SHA der else Zweig abgearbeitet.
Also auch bei THash_SHA1.
Grüße
Klaus