HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por fladimir »

Pessoal... alguém q atualizou recentemente o Harbour para versão similar a q entitula o tópico teve algum problema com as funções hb_crypt e hb_decrypt?

Atualizei devido a questão do envio de email via hotmail com TipMailSend etc... mas depois q atualizei, esta aparentemente normal, com excessão de arquivos existentes previamente criptografados com a função hb_crypt não estão mais sendo corretamente descriptografados com hb_decrypt

Ou seja...
Antes eu usava a 3.4 versão de junho e ao entrar no sistema em determinada função pedia uma senha e eu gravava um arquivo criptogrado da seguinte forma:

Código: Selecionar todos

memowrit( cArq, hb_crypt( chr(32) + cSerial) )
E lia o arquivo para validar da seguinte forma

Código: Selecionar todos

cConteudoArq := alltrim(memoread(cArq))
cConteudoArq := hb_decrypt( cConteudoArq )
E o resultado comparava com o serial, mas agora debugando o arquivo é lido mas ao descriptografar aparecem simbolos ao inves do conteudo correto q seria o serial.

Pra tirar a dúvida rodei uma EXE anterior ao harbour novo e esta lendo correto.

Esta rotina não foi modificada após a atualização do Harbour apenas a aplicação recompilada.

Alguém saberia dizer se seria um BUG ou como testo de outra forma?

Se eu apagar o arquivo e recriar o mesmo liberando a partir do EXE compilado com o HB34 atual o problema para, mas o ruim é q se eu por em campo todos os clientes vão ter q ser revalidados além de outros locais do sistema q utilizam a hb_crypt/hb_decrypt darem problema.

Não sei se tem a ver mas com o HB34 recente começou a pedir em campo 2 dlls q antes não pediam q são:

Código: Selecionar todos

libcrypto-1_1.dll
libssl-1_1,dll

[]'s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por JoséQuintas »

Ao que parece, as funções são das DLLs e não do Harbour.
Em último caso, ao baixar os fontes do GitHub, dá pra ver todo histórico, e até desfazer modificações.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por Jairo Maia »

Olá Pessoal,

Será que pode ser algum problema com o segundo parâmetro que não está sendo informado, então chega como Nil?

Não sei se pode ser, mas como ele deve ser caractere, tente: cConteudoArq := hb_decrypt( cConteudoArq, "" )
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por fladimir »

JoséQuintas escreveu:Ao que parece, as funções são das DLLs e não do Harbour.
Em último caso, ao baixar os fontes do GitHub, dá pra ver todo histórico, e até desfazer modificações.
Obrigado Quintas. Olhei mas não vi nada explicito ao problema.
Jairo Maia escreveu:Olá Pessoal,

Será que pode ser algum problema com o segundo parâmetro que não está sendo informado, então chega como Nil?

Não sei se pode ser, mas como ele deve ser caractere, tente: cConteudoArq := hb_decrypt( cConteudoArq, "" )
Obrigado Jairo, pode talvez ser algo nesse sentido, apesar q o segundo parametro não é obrigatório pode estar afetando, vou verificar.

Em todo caso eu retornei a versão q utilizava para efeito de testes e sem modificar nada passou, vou proceder com testes em paralelo e caso consiga algo posto aki, se não tento atualizar mais pra frente ou modificar as hb_crypt por outras mesmo.

Percebi q a função hb_crypt e hb_decrypt são da xhb.hbc, talvez tenha alguma incompatibilidade com alguma mudança q o Viktor tenha feito, talvez mudar para outra (alguém conhece alguma), no CT.lib tem a Crypt mas não achei a Decrypt, mas isso seria outro assunto.

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por fladimir »

Testei e não é o segundo parametro aparentemente, passei como '', como ' ' e tb não deu.

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por lucimauro »

2016-12-13 01:04 UTC Viktor Szakats (vszakats users.noreply.github.com)
* contrib/xhb/hbcrypt.c
! HB_CRYPT()/HB_DECRYPT(): fix 13 years old bug to avoid returning
_non-deterministic_ result if the second parameter (cKey) is not passed
or not a string. The key will now be a single zero byte in this case.
Passing an empty string results in the same key. Notice however that
encrypting without a key makes no sense and even the in-source comments
suggest a key length of 6 characters minimum.

Código: Selecionar todos



      LOCAL a, b, c, d
      ? hb_StrToHex( a := hb_Crypt( "hello" ) )
      ? hb_StrToHex( b := hb_Crypt( "hello", "" ) )
      ? hb_StrToHex( c := hb_Crypt( "hello", Chr( 0 ) ) )
      ? hb_StrToHex( d := hb_Crypt( "hello", "1" ) )
      ? hb_Decrypt( a )
      ? hb_Decrypt( b, "" )
      ? hb_Decrypt( c, Chr( 0 ) )
      ? hb_Decrypt( d, "1" )
      

After this update these functions will behave predictably regardless
of C compiler or runtime environment, but these results may differ
from the faulty/random results previously returned when called with
an invalid/missing cKey.
I strongly suggest to avoid these custom crypto functions and use
hb_blowfish*() in core instead. Or even better use AES128/AES256
(in non-ECB mode) if such functionality is accessible.
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por lucimauro »

Desculpem tinha mandado a mensagem varias vezes.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por fladimir »

Obrigado por tirar a dúvida...

então pelo q entendi... como eu atualizei ontem dia 12 não tinha nada no Changelog somente hj dia 13 explicando o q ocorreu.

vlw
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por Jairo Maia »

Olá Pessoal,
Viktor Szakats escreveu:! HB_CRYPT()/HB_DECRYPT(): fix 13 years old bug to avoid returning _non-deterministic_ result if the second parameter (cKey) is not passed or not a string.
Não deu prá entender...

Sempre usei essas funções com o segundo parâmetro e como caractere, mas corrigido hoje um bug que existe há 13 anos? Como assim se o Fladimir usava a versão 3.4 de junho e funcionava? Enfim...
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por fladimir »

É essa parte eu tb não entedi, esta funcionando tudo ok aki... deve ser algum detalhe q em determinado tipo de uso ou conteudo dava problema... mas q bom q confirmou q realmente foi mexido...

Agora parece q ele sugeriu o uso de outras essa parte q quero dar uma olhada melhor em quais vantagens etc.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por Pablo César »

Pra mim está dando falhas e acredito que faz tempo sim. Eu já passei por isso anteriormente, mas pensei que pudera ser falha minha na utilização.

Agora quanto ao segundo parâmetro do tipo caracter, vejo que as vezes dá as vezes não...
Screen37.png
Screen37.png (10.74 KiB) Exibido 2009 vezes

Código: Selecionar todos

Function Main()
LOCAL a, b, c, d, e

SetMode(25,80)

? hb_StrToHex( a := hb_Crypt( "hello" ) )              
?? "  ->" + Space(2) + hb_Decrypt( a )
? hb_StrToHex( b := hb_Crypt( "hello", "" ) )          
?? "  ->" + Space(2) + hb_Decrypt( b, "" )
? hb_StrToHex( c := hb_Crypt( "hello", Chr( 0 ) ) )    
?? "  ->" + Space(2) + hb_Decrypt( c, Chr( 0 ) )
? hb_StrToHex( d := hb_Crypt( "hello", "1" ) )         
?? "  ->" + Space(2) + hb_Decrypt( d, "1" )
? hb_StrToHex( e := hb_Crypt( "hello", 1 ) )           
?? "  ->" + Space(2) + hb_Decrypt( e, 1 )

Inkey(0)
Return Nil
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por fladimir »

Obrigado pelos esclarecimentos Pablo...

No meu caso deve ser pq como eu gravava antes (lado esquerdo) algo e para comparar pegava da direita para esquerda X casas não visualizava problema.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por Jairo Maia »

Olá Pessoal,

Pablo, realmente também verifiquei a mesma coisa sim tanto em 3.0 e 3.2 usando o exemplo (não tenho o 3.4). E interessante, note que apenas as opções "c" e "d" estão corretas, pois possuem o segundo parâmetro caractere e não vazio. Na opção "b" que tem o segundo parâmetro caractere mas vazio, também não funciona.

Como sempre usei essas funções com ambos parâmetros, então não havia notado isso e me orientei pela informação do Fladimir, mas o Viktor tem razão sim. O bug existia há anos e foi corrigido agora.

Quanto a essa função que ele recomenda usar em substituição a essas, a saber hb_blowfish(), até pesquisei na internet, mas não achei nada. Se alguém souber sobre ela seria legal compartilhar.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por Pablo César »

Oi Jairo, pois é, Viktor tem razão. Eu há anos atrás tinha visto essa função do blowfish (sem hb_ naquela época).

Deixar eu ver pra você...
Screen40.png
http://www.harbourdoc.com.br/show.asp?s ... hEncrypt() (doc)
http://bernard.mouille.free.fr/0_Harbou ... 00002.html (exemplo, em francês)

Na minha opinião, é muito importante perder um tempinho sempre para relatar possiveis bug. É a única forma de melhorar algo.
Eu tinha percebido algo, mas pensei que era o meu mal manejo com a função...

Posso até parecer chato, mas hoje em dia eu perco um tempinho mas eu relato...
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

HB_Crypt Harbour 3.4.0 dev (e1b944) 2016-12-09

Mensagem por Jairo Maia »

Valeu Pablo, vou testar. Obrigado.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Responder