Página 1 de 2

Como encriptar e decriptar no harbour

Enviado: 31 Out 2007 01:17
por clodoaldomonteiro
Olá!

Eu uso as funções de encriptar e decreptar da lib do GAS, mas como essa lib é 16 bits, não dá para compilar com o xharbour, por isso queria saber se tem outra função para fazer isso.

Valeu a atenção.

Enviado: 31 Out 2007 03:30
por Maligno
Pegue um help (básico) do XHarbour na minha página. Nele tem tudo ou quase tudo o que você precisa saber. Não deve ser a última versão, mas acho que pode ajudar.
Link: http://www.buzinello.com/pub/index.php? ... tutorials/

Enviado: 31 Out 2007 05:53
por Stanis Luksys
Opa,

Sugiro usar a função hb_md5(), porém não tem volta.

Falou!

Re: Como encriptar e decreptar no harbour

Enviado: 31 Out 2007 11:12
por sygecom
clodoaldomonteiro escreveu:Olá!

Eu uso as funções de encriptar e decreptar da lib do GAS, mas como essa lib é 16 bits, não dá para compilar com o xharbour, por isso queria saber se tem outra função para fazer isso.

Valeu a atenção.
Exemplo do Help:

Código: Selecionar todos

PROCEDURE Main
      LOCAL cText := "Hello world"
      LOCAL cKey  := "xHarbour"
      LOCAL cCipher

      cCipher := HB_Crypt( cText, cKey )

      ? cCipher

      ? HB_Decrypt( cCipher, cKey )
   RETURN

Enviado: 31 Out 2007 11:14
por Maligno
Stanis Luksys escreveu:Sugiro usar a função hb_md5(), porém não tem volta.
MD5 é hash. Não é pra essa finalidade. Por isso não tem volta. :)

Enviado: 31 Out 2007 12:23
por TerraSoftware
Faz assim:

Criptografar:
var1:="Terra Software"
var2:=crypt(var1,"minha senha")

Descriptografar:
var3:=crypt(var1,"minha senha")

Observer que a funcao crypt faz tanto a criptografia como a descriptografia e ainda vc pode usar nivel de senha. Acho otima, uso muito, até hoje naum apresentou problemas. Só tomo cuidado com espaços vazios. Por exemplo, se vc tem uma variavel no banco com 20 caracteres e vc criptografa uma palavra com 14 caracteres e grava no banco, ao descriptografar a variavel do banco vc tera outro resultado diferente do original. Para evitar este problema, eu sempre criptografo a variavel inteira. Ex:

var1:="Terra Software"
var2:=var1+space(20-len(var1))
replace no_nome with crypt(var2,"senha")

Enviado: 31 Out 2007 12:37
por sygecom
ou pode usar o ALLTRIM() para pegar somente o que vc quer !!!

Enviado: 31 Out 2007 13:14
por rochinha
Amiguinho

Voce poderá encriptar/decriptar nativamente no Harbour usando as funções da SIX Library contidas na HBSIX.LIB, bastando para isto liga-la na compilação:

sxEncrypt() e sxDecrypt()

Consulte o manual da SIX 3 para saber como usa-las.

Enviado: 31 Out 2007 17:15
por Stanis Luksys
Maligno escreveu:MD5 é hash. Não é pra essa finalidade. Por isso não tem volta. :)
Sempre usei para criptografar senhas e nunca tive problemas. Aliás é uma prática bem comum. Inclusive é bem sadio que não se possa descriptografar uma senha, e que o desenvolvedor do software não tenha acesso a ela, mantendo a privacidade do usuário.

Agora se estes dados realmente necessitam ser descriptografados depois, então realmente não serve.

Enviado: 31 Out 2007 17:20
por Maligno
Desculpe, Stanis. Mas encriptação sempre pressupõe a reversão para obtenção do original. Criptografia sempre tem duas mãos, ao contrário do que ocorre com o hash, que não encripta nada; apenas mistura. Mas essa confusão é até comum. Como o resultado do hash é ininteligível, confunde-se com encriptação.

E, por incrível que pareça, o hash pode sim ser revertido. E se o dado original for de tamanho pequeno, como uma senha, nem demora tanto. Mas aí é só por força bruta, claro.

Enviado: 31 Out 2007 17:22
por Stanis Luksys
Sim, eu entendo o que você quer dizer, não é de fato criptografia, mas é apenas o uso do termo. No final as vantagens por não ter volta são maiores, no caso de senhas.

Enviado: 31 Out 2007 17:27
por Maligno
Sim, eu entendo o que você quer dizer, não é de fato criptografia, mas é apenas o uso do termo.
Eu sei. Os termos acabam meio que misturados. Mas isso só causa confusão. Pra quem nem nunca ouviu falar, fica mais confuso ainda. Mais por isso que intervi.
No final as vantagens por não ter volta são maiores, no caso de senhas.
Outro dia, apenas pra teste, peguei um hash que eu havia calculado e consegui recuperar uma senha alfanumérica de seis dígitos em menos de quatro horas. Então, o termo "não tem volta" é um tanto relativo. Por isso que sempre recomendo "anexar" uma string qualquer de segurança. Aí sim, não tem jeito mesmo. :)

Enviado: 31 Out 2007 17:29
por Stanis Luksys
Eu mesmo me sinto inseguro, quando estou navegando num site e entro no "esqueci minha senha" e me enviam ela por e-mail do jeitinho que cadastrei.

Lembro de uma rotina de criptografia, que dava pra abrir o DBF e aplicar a senha criptografada com a que eu tinha cadastrado, e o resultado era a palavra-chave. Mesmo que se esteja usando uma função de encriptação, se algum maluco descobrir a palavra-chave, descobre a senha de todos os usuários.

Sem contar o lance da privacidade do usuário.

Mas claro que isso que falei só se aplica a senhas, outros dados, nem sempre.

Enviado: 31 Out 2007 17:35
por Maligno
Ah, sim. Mas esse esquema de enviar senha por eMail é só pra coisas de baixo nível de segurança. Além do que, basta interceptar sua conexão com um monitor de tráfego e mesmo com SSL, a senha aparece bonitinha lá. Não dá pra confiar em eMail.

Mas falando em MD5 é diferente. O simples cuidado que mencionei já faz o algoritmo super-seguro. E por um simples motivo: não se pressupõe que a string retornada seja a soma da senha com a palavra-chave. E como a string aumenta de tamanho, o tempo de tentativa-e-erro aumenta exponencialmente. :)

Enviado: 31 Out 2007 17:44
por Stanis Luksys
O MD5 também não é uma fortaleza, apesar de ser uma possibilidade muitíssimo remota, duas strings diferentes podem ocasionar o mesmo resultado final, o que torna um pouco mais fácil de se aplicar o algorítmo do contrário, pois qualquer que seja o resultado que você encontre, conseguirá burlar, mesmo até não sendo a senha que o cara cadastrou!!

Mas isso é quase impossível. É bem seguro sim.