Вот, к примеру
while (i < Length(TempKey)) do
begin
Move((KeyPtr+j)^, K1, 4);
Move(TempKey[i], K2, 4);
K1 := ROL(K1, K2) xor K2;
Move(K1, (KeyPtr+j)^, 4);
j := (j + 4) mod KeySize;
Inc(i, 4);
end;
Бред работать со строковой переменной таким способом. Явно не смотрели, как это реализовано в компонентах "Криптография"
Огромная ценность строковой переменной, что под нее память выделяется автоматически и уничтожается тоже