Hola,
Tal vez esta tarde he metido la pata al probar codificando la cadena cifrada en "base 64": he probado de nuevo y he podido comprobar que, en efecto, codificar la cadena cifrada tal vez sea una solución. No sé si lo será para mi problema en concreto, puesto que no puedo probarlo todavía en el programa en cuestión, pero, en un programa de prueba que estoy haciendo aquí, en efecto, algo así funciona como se espera:
Código Delphi
[-]
uses
StrUtils, IdCoderMIME, UCipher;
function Encode(str : string) : string;
var
encoder : TIdEncoderMIME;
begin
encoder := TIdEncoderMIME.Create();
try
result := encoder.Encode(str);
finally
encoder.Free();
end;
end;
function Decode(str : string) : string;
var
decoder : TIdDecoderMIME;
begin
decoder := TIdDecoderMIME.Create();
try
result := decoder.DecodeString(str);
finally
decoder.Free();
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
SAMPLE_TEXT = 'Hello dolly how are you I am fine ok goodbye. ';
var
cipher : TCipher;
encryptedText : string;
begin
cipher := TCipher.Create();
try
encryptedText := cipher.EncryptString(DupeString(SAMPLE_TEXT, 150), 'password', haSHA512);
Memo1.Text := Encode(encryptedText);
ShowMessage(cipher.DecryptString(Decode(Memo1.Text), 'password', haSHA512));
finally
cipher.Free();
end;
end;
Como puede verse estamos guardando la cadena cifrada en el "TMemo", no obstante, lo hacemos codificándola en "base 64". Pues bien, después de descodificarla de nuevo podemos descifrarla obteniendo como resultado la cadena original. Mañana comentaré si al final consigo que esto también funcione donde lo necesito.
P.D. Gracias
Casimiro por hacerme mirar esto más despacio.