Buenas tardes,
he migrado una aplicación de Delphi 7 a Delphi 2010 y me he encontrado con un problema en una función para descodificar la contraseña de acceso a la configuración de la aplicación.
Hasta ahora la aplicación estaba funcionando correctamente pero al hacer la migración me devuelve error en la línea "Src.ReadBuffer(Size,Sizeof(Size));".
A continuación pongo el código fuente de la función a ver si es que se me está pasando algo.
Código Delphi
[-]function Descifrar(Str,Clave: AnsiString): AnsiString;
var
Src: TMemoryStream;
Dst: TStringStream;
Size: Integer;
Key: TAESKey;
ExpandedKey: TAESExpandedKey;
begin
Result:= ''; Src:= TMemoryStream.Create;
try
Dst:= TStringStream.Create(Str);
try
StrToStream(Str,Src);
Src.Position:= 0;
FillChar(Key,Sizeof(Key),#0);
if Length(Clave) > Sizeof(Key) then
move(PChar(Clave)^,Key,Sizeof(key))
else
move(PChar(Clave)^,Key,Length(Clave));
AESExpandKey(ExpandedKey,Key);
Src.ReadBuffer(Size,Sizeof(Size));
AESDecryptStreamECB(Src,Dst,ExpandedKey);
Dst.Size:= Size;
Result:= Dst.DataString;
finally
Dst.Free;
end;
finally
Src.Free;
end;
end;
Muchas gracias de antemano y un saludo.