[firebase-br] IBO 5.5.3 - Problema ao gravar campo criptografado

Carlos H. Cantu listas em warmboot.com.br
Qua Dez 3 16:28:08 -03 2014


Dependendo do charset que esse campo no BD está definido, o FB poderá
fazer uma conversão dos caracteres baseado no charset da conexão e o
charset do campo, mas isso fica transparente, ou seja, mesmo se o
conteúdo gravado na base for "diferente" daquele que vc mandou gravar,
na hora que você recuperar ele (usando o mesmo charset de conexão),
ele tem que vir igual ao que tinha mandado gravar. Se não quiser que
seja feita qualquer conversão, defina o campo como charset NONE.

Indo mais além, nas versões do Delphi > 2007, o tipo string é
codificado seguindo o padrão Unicode.

Acho que ajudaria tb se você postasse o string que "era pra ser
gravado" e o que realmente está sendo gravado.

PS: O IBO tem um monitor que permite que vc veja tudo que está sendo
enviado e recuperado para/do servidor, portanto você conseguiria ver
ali a informação que está endo trafegada.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

MW> a função parece estar correta, pq se chamo criptografia('AÇOUGUE',
MW> minhachave) retorna #$14'‹'#$1B#7#6#$A#$16 como o esperado
MW> e se chamo criptografia(#$14'‹'#$1B#7#6#$A#$16, minhachave) retorna
MW> 'AÇOUGUE'

MW> então a function parece estar funcionando corretamente.


MW> -=Ma®©oS=-
MW> Marcos R. Weimer
MW> Delphi / C# / ASP.NET / PHP / WebServices / Firebird


MW> Em 3 de dezembro de 2014 15:09, Alexandre <camilo em apollosistemas.com.br>
MW> escreveu:

>> Se a resposta à pergunta do Carlos for não, então tente mudar
>>
>> for i := 1 to TamanhoString do
>>
>> por
>>
>> for i := low(mStr) to High(mStr) do
>>
>> tive que fazer isto em uma situação parecida porque no delphi 6 o primeiro
>> campo da string é 0 e no xex é 1 ou vice versa, desta forma atende aos dois
>> casos.
>>
>>
>> Alexandre Camilo
>> +55 27 3233-4143
>>
>>
>>
>> On 03/12/2014 14:55, Cyber Guido wrote:
>>
>>> Pelo que entendi até aqui, a função retorna o valor correto, o problema é
>>> apenas quando grava no banco, certo? Ou seja, se você fizer um programa que
>>> pegue o conteúdo de um editor, o criptografe, e o apresente em outro
>>> editor, o resultado é perfeito?
>>>
>>> Se sim, a minha suspeita, na verdade a única explicação que vejo, é que o
>>> IBO esteja fazendo alguma conversão no momento de enviá-lo para o banco,
>>> não vejo outra explicação.
>>>
>>> Cordialmente,
>>> Carlos
>>>
>>> ------ Original Message ------
>>> From: "Marcos Weimer" <marcosweimer em gmail.com>
>>> To: "Cyber Guido" <cyberguido em gmail.com>
>>> Cc: "FireBase" <lista em firebase.com.br>
>>> Sent: 03/12/2014 14:39:26
>>> Subject: Re: Re[2]: [firebase-br] IBO 5.5.3 - Problema ao gravar campo
>>> criptografado
>>>
>>>  tem, mas também não funcionou.
>>>>
>>>> Veja a function...
>>>>
>>>> function Criptografia(mStr, mChave: ansistring): ansistring;
>>>> var
>>>>   i, TamanhoString, pos, PosLetra, TamanhoChave: Integer;
>>>> begin
>>>>   Result := mStr;
>>>>   TamanhoString := Length(mStr);
>>>>   TamanhoChave := Length(mChave);
>>>>   for i := 1 to TamanhoString do
>>>>   begin
>>>>     pos := (i mod TamanhoChave);
>>>>     if pos = 0 then
>>>>       pos := TamanhoChave;
>>>>     PosLetra := ord(Result[i]) xor ord(mChave[pos]);
>>>>     if PosLetra = 0 then
>>>>       PosLetra := ord(Result[i]);
>>>>     Result[i] := AnsiChar(PosLetra);
>>>>   end;
>>>> end;
>>>>
>>>> oque esta ansistring estava string e onde esta ansichar estava chr
>>>>
>>>> está função é bem antiga e não tenho como mudar (centenas de senhas
>>>> criptografadas), senão partiria para um hash md5 ou algo do genero.
>>>>
>>>>
>>>> -=Ma®©oS=-
>>>> Marcos R. Weimer
>>>> Delphi / C# / ASP.NET / PHP / WebServices / Firebird
>>>>
>>>>
>>>> Em 3 de dezembro de 2014 14:34, Cyber Guido <cyberguido em gmail.com>
>>>> escreveu:
>>>>
>>>>> Neste caso a única suspeita que eu tenho é que
>>>>> "qgrava.parambyname('senha').asstring", mais precisamente "asstring",
>>>>> esteja interferindo. Apesar de mostrar o valor correto pode estar enviando
>>>>> uma sequência de bytes incorreta. Não tem "asAnsiString" como no FireDAC?
>>>>>
>>>>> Cordialmente,
>>>>> Carlos
>>>>>
>>>>> ------ Original Message ------
>>>>> From: "Marcos Weimer" <marcosweimer em gmail.com>
>>>>> To: "Cyber Guido" <cyberguido em gmail.com>; "FireBase" <
>>>>> lista em firebase.com.br>
>>>>> Sent: 03/12/2014 13:29:48
>>>>> Subject: Re: [firebase-br] IBO 5.5.3 - Problema ao gravar campo
>>>>> criptografado
>>>>>
>>>>>  Esqueci de mencionar, mas eu já havia alterado para ansistring sem
>>>>>> sucesso, por isso que mandei a duvida aqui na firebase e não em uma lista
>>>>>> de delphi.
>>>>>>
>>>>>> - No ctrl+F7 o valor retornado é o correto
>>>>>> - depois de passar o parametro para a query no vejo o valor que está
>>>>>> no parametro e é o correto
>>>>>>
>>>>>> Só quando grava que algo de errado acontece
>>>>>>
>>>>>> -=Ma®©oS=-
>>>>>> Marcos R. Weimer
>>>>>> Delphi / C# / ASP.NET / PHP / WebServices / Firebird
>>>>>>
>>>>>>
>>>>>> Em 3 de dezembro de 2014 12:36, Cyber Guido <cyberguido em gmail.com>
>>>>>> escreveu:
>>>>>>
>>>>>>> Marcos,
>>>>>>>
>>>>>>> XE6, como já foi dito, trata strings de maneira radicalmente
>>>>>>> diferente do D6. Experimente substituir 'String' por 'AnsiString' (no D6
>>>>>>> strings eram ansistring) que deve resolver.
>>>>>>>
>>>>>>> Este artigo de autoria de Cary Jensen pode ser útil
>>>>>>>
>>>>>>> http://caryjensen.blogspot.com.br/2010/01/migrating-
>>>>>>> existing-delphi-applications.html
>>>>>>>
>>>>>>> preste especial atenção ao 8º parágrafo que tem link para um white
>>>>>>> paper.
>>>>>>>
>>>>>>> Cordialmente,
>>>>>>> Carlos
>>>>>>>
>>>>>>>
>>>>>>> ------ Original Message ------
>>>>>>> From: "Marcos Weimer" <marcosweimer em gmail.com>
>>>>>>> To: "FireBase" <lista em firebase.com.br>
>>>>>>> Sent: 03/12/2014 11:55:07
>>>>>>> Subject: [firebase-br] IBO 5.5.3 - Problema ao gravar campo
>>>>>>> criptografado
>>>>>>>
>>>>>>>  Ola!
>>>>>>>>
>>>>>>>> Sempre gravamos da mesma forma...
>>>>>>>> qgrava.parambyname('senha').asstring := criptografia(senhadigitada,
>>>>>>>> chavecripto)
>>>>>>>>
>>>>>>>> a function criptografia retorna uma string #$14#$008B#$1B#7#6#$A#$16
>>>>>>>>
>>>>>>>> quando vou no parambyname o valor confere com oque é retornado pelo
>>>>>>>> criptografia, mas ao gravar não funciona.
>>>>>>>>
>>>>>>>> Antes usávamos o IBO 4.9.8 (no D6, agora utilizamos o XE6) e
>>>>>>>> funcionava
>>>>>>>> perfeitamente. Alguém passou por algo similar ?
>>>>>>>>
>>>>>>>>
>>>>>>>> -=Ma®©oS=-
>>>>>>>> Marcos R. Weimer
>>>>>>>> Delphi / C# / ASP.NET / PHP / WebServices / Firebird
>>>>>>>> ______________________________________________
>>>>>>>> FireBase-BR (http://www.firebase.com.br/) - Hospedado em
>>>>>>>> http://www.locador.com.br/
>>>>>>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>>>>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>>>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ______________________________________________
>>>>>>> FireBase-BR (http://www.firebase.com.br/) - Hospedado em
>>>>>>> http://www.locador.com.br/
>>>>>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>>>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>>>>
>>>>>>
>>>>>>
>>>>  ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
MW> ______________________________________________
MW> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
MW> Para saber como gerenciar/excluir seu cadastro na lista, use:
MW> http://www.firebase.com.br/fb/artigo.php?id=1107
MW> Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista