2009-06-08 7 views
13

Est-ce que PHP a une fonction intégrée pour faire des chaînes de hachage entières, quelque chose qui est difficile à inverser?php hash form string to integer

Maintenant, je sais que je peux probablement avec faire un md5, et le traitement d'une sous-chaîne de celui-ci en tant que numéro 16 radix, mais je suis à la recherche de quelque chose de construit.

Merci.

Répondre

30

Je pense que le meilleur pari choisirait un hachage standard [soit md5() ou sha1()] pour obtenir un hachage de votre chaîne, puis d'obtenir un hachage entier, à un base_convert($hash, 16, 10) et qui doit convertir votre hachage en un hachage entier. J'espère que je comprends votre problème correctement.

2

Je ne pense pas que vous trouverez quelque chose de intégré pour cela, mais votre idée avec md5() est plutôt bonne, en fait. Je ne pouvais pas imaginer pourquoi vous auriez besoin d'autre chose: ne pourrait pas être plus rapide, ne pourrait pas être plus stable, ...

3

Je pense que vous êtes sur la bonne voie en abordant ce problème en deux étapes. Tout d'abord, vous devriez probablement vous en tenir au hachage md5 pour répondre à vos exigences «difficiles à inverser». Deuxièmement, vous pouvez prendre la sortie md5 en entrée de votre fonction "convertir en entier".

Pour la deuxième partie, qu'allez-vous exactement après? Est-ce que a pour être un nombre entier? Ou juste des caractères imprimables? Si vous cherchez à convertir votre hash en quelque chose que vous pouvez stocker dans une base de données, transmettre sur le réseau, ou pour une autre raison, la fonction convertuuencode pourrait fonctionner pour vous: http://us.php.net/manual/en/function.convert-uuencode.php

Un autre rond-point approche hackish serait d'obtenir la valeur binaire de votre hachage, et le convertir en un nombre décimal en utilisant: http://us.php.net/manual/en/function.bindec.php bien que, je n'ai jamais essayé cela et je ne sais pas si cela fonctionnerait comme vous le souhaitez.