Existe alguma maneira de receber uma String a partir de um hashCode, a situação abaixo representa o que quero:
String x = "lalala";
int hash = x.hashCode();
String y = getStringByHashCode(hash);
if(y.equals(x))
//Tem que entrar aqui
Existe alguma maneira de receber uma String a partir de um hashCode, a situação abaixo representa o que quero:
String x = "lalala";
int hash = x.hashCode();
String y = getStringByHashCode(hash);
if(y.equals(x))
//Tem que entrar aqui
Um hashcode é um inteiro e isso quer dizer que há no máximo 2 ^32 = 4.294.967.296 possíveis.
Mas o número de strings possíveis é muito maior que 2 ^ 32 (por exemplo, o número das strings com 10 letras de A até Z é 141.167.095.653.376, ou seja, dadas duas strings diferentes, pode ser que seus hashcodes sejam iguais.)
Vou procurar na minha máquina um exemplo que dei uma vez de duas strings com o mesmo hashcode.
Não é possível.
Existe alguma maneira de receber uma String a partir de um hashCode
não. Pelo simples facto que uma função de hash é um método de encriptação de mão-única (one-way).
O que significa que vc pode escriptar, mas não pode desencriptar.
É curioso que as palavras “desprezível” e “auréola” tenham o mesmo hashCode.
Parece algo do “Código da Bíblia” - alguém que é desprezível aos olhos dos homens na verdade pode ter uma auréola de santidade…
Guilherme,
se você precisa de funções de hash mais seguras, ou com maior conjunto de possibilidades, recomendo dar uma olhada em md5 ou sha.
fw