Você não está conectado. Conecte-se ou registre-se

Discussão: Lógica de Hashs

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 Discussão: Lógica de Hashs em Qui Mar 29, 2012 5:14 pm

[iPs]BrunoSilva

avatar
Administrador
Vendo um código do Gonçalo em em outra área, resolvi abordar este assunto bastante. Que é a matemática dos hashs.

A tempos e tempos procuramos como fazer hashs rápidos e eficientes, mas nunca conseguimos! Basicamente hash é uma especie de codificação que não pode ser voltada atrás. Em grande parte dos casos é feita com a soma dos caracteres mais a representação em letras.

Muitos hashs são famosos, mas poucos são eficientes. Um deles que uso e conheço é MD5, apesar de ser bastante eficiente atualmente, ainda está longe de ser totalmente seguro. Isto porque a taxa de colisões é relativamente grande. Lembrando que taxa de colisões é o número de palavras que tem o mesmo hash. Isto ocorre porque matematicamente é impossível representar milhões de cadeias de caracteres em apenas 64 caracteres, logo há muitas colisões, tornando o sistema não seguro

O código de Gonçalo é muito fraco, mas uma linha que ele utilizou me chamou atenção

o_hash(buf[]){
new hstr[] = "AQHENA";
new fstr;
new hash = strlen(buf);
new z;
new var;
new n;
for(n = 0; n z = (var + 1246789) * 10;
fstr = z + strlen(hstr);
} return fstr;
}

O código é fraco porque não armazena a posição da letra na cadeia de caracteres, isto é
ABC = CBA = BCA = BAC

Observeram? Ambos retornaram o mesmo hash. Em questão de segundos posso tirar vários hashs que possam retornar o mesmo valor

A = 1
B = 2
C = 3
logo A + B = (A + B) + 1

Isto é, não tem segurança nenhuma, mas voltando ao assunto que me chamou atenção. O (var + 1246789) fará uma espécie de progressão aritmética, pensando nisto, acredito que posso burlar uma lógica com base na posição dos caracteres, tamanho da string, valor do caractere e um valor adicional a cada loop (sequencia aritmética). O mesmo poderia

ABCDE

Pular de 2 em 2 e depois fazer a operação inversa começando do FINAL + 1
Logo pegariamos

A - > C -> E
D -> B

Assim a posição será contada, excluindo a possibilidade de ABC e CBA ter o mesmo valor
Enfim, é isto .. O que acham? Procede? Se puderem dar dicas ou padrões que possa "alargar a representação dos números"
Se utilizar 255 caracteres na expressão final, podemos obter uma combinação enorme e com o sistema de pular caracteres, a taxa de colisão seria muito baixa!

Ver perfil do usuário http://www.brunodasilva.com

2 Re: Discussão: Lógica de Hashs em Qui Mar 29, 2012 5:16 pm

[iPs]BrunoSilva

avatar
Administrador
Até se pode usar códigos baseados na teoria do código morse, não especificadamente igual, mas alterando a string para caracteres para depois fazer o hash tornaria a operação inversa de pegar o texto original praticamente impossivel

Ver perfil do usuário http://www.brunodasilva.com

3 Re: Discussão: Lógica de Hashs em Qui Mar 29, 2012 5:49 pm

Eu tinha pegado um da wiki do samp, ai comecei sei lá, brincando com isso, mas cada vez que eu printava as coisas não eram iguais ._.

@Edit

Podemos fazer vários testes, eu fiz este aqui em php

Código:
function zhash($buf) {
   $hash = strlen($buf);
   $v1;
   $v2;
   $t;
   for($t=0; $t<$hash; $t++){
      $v1 = ($v2 + $hash) * 10;
      $v2 = ($v1 + 2 + 10 * 20 / 2);
   } return ($v1 <<100) + $v2 * 10;
}



Última edição por [iPs]INowTen em Sex Mar 30, 2012 6:54 am, editado 1 vez(es)

Ver perfil do usuário

4 Re: Discussão: Lógica de Hashs em Qui Mar 29, 2012 6:41 pm

Ja usei isso como forma de encriptar as senhas dos usuarios de um site q eu tinha....!

Ver perfil do usuário

5 Re: Discussão: Lógica de Hashs em Qui Mar 29, 2012 6:48 pm

[iPs]BrunoSilva

avatar
Administrador
Gonçalo não adianta ficar dando hashs atoa, o valor pode ser 1 milhão ou 1 caso você não diferenciar a posição dos caracteres ABC será sempre CBA

Ver perfil do usuário http://www.brunodasilva.com

6 Re: Discussão: Lógica de Hashs em Qui Mar 29, 2012 11:42 pm

Muito interessante seu tópico,
porque a lógica é simples para quem entende.
eu por exemplo(que não sei muit), prefiro usar hashs conhecidos como MD5, Whirlpool etc..
Oque sei de hashs é que eles seguem um padrão para mais tarde
eles possam ser decodificados.

enfim, Bom trabalho!

Ver perfil do usuário

7 Re: Discussão: Lógica de Hashs em Sex Mar 30, 2012 6:53 am

[iPs]BrunoSilva escreveu:Gonçalo não adianta ficar dando hashs atoa, o valor pode ser 1 milhão ou 1 caso você não diferenciar a posição dos caracteres ABC será sempre CBA

Mas eu curti do seu topico, agora cara o md5 não é um hash bom?

Ver perfil do usuário

8 Re: Discussão: Lógica de Hashs em Sex Mar 30, 2012 7:05 am

Hash pra mim seria util só embaralhar o código, ou seja, trocando ele de posição, pra mim ja é util, um exemplo é fazer :
abcde
edcbe
depois fazer uma multiplicação que seja

Ver perfil do usuário

Conteúdo patrocinado


Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum