Obtener valor entero único de cadena
Tengo diferentes cadenas únicas en el mismo formato. La cuerda se ve asíaxf25!j&809>-11~dc
y quiero obtener un valor entero único de esta cadena.Cada vez que este valor debe ser el mismo y depende de la cadena. He intentado convertir cada carácter de la cadena a int y luego sumo los caracteres entre sí. Pero en caso de que tenga 2 cadenas con el mismo conjunto de símbolos, devuelve valores enteros que son iguales entre sí. Así que no me conviene. ¿Cómo puedo generar un valor entero único a partir de una cadena única?
ACTUALIZAR:
Habiendo considerado todas las soluciones dadas, decidí crear una función que generara valores enteros únicos. Espero que excluya las colisiones.
public int getUniqueInteger(String name){
String plaintext = name;
int hash = name.hashCode();
MessageDigest m;
try {
m = MessageDigest.getInstance("MD5");
m.reset();
m.update(plaintext.getBytes());
byte[] digest = m.digest();
BigInteger bigInt = new BigInteger(1,digest);
String hashtext = bigInt.toString(10);
// Now we need to zero pad it if you actually want the full 32 chars.
while(hashtext.length() < 32 ){
hashtext = "0"+hashtext;
}
int temp = 0;
for(int i =0; i<hashtext.length();i++){
char c = hashtext.charAt(i);
temp+=(int)c;
}
return hash+temp;
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return hash;
}