2017-10-17 7 views
0

Dans mes devoirs, il est nécessaire de générer un hachage MD5 pour le mot de passe avec MessageDigest et DatatypeCoverter, j'ai pu générer un hachage MD5 à partir du mot de passe entré et son une chaîne comme ceci:Comment générer un hachage MD5 uniquement avec des nombres ou uniquement avec des caractères java

input: minh 
hash: C92F1D1F2619172BF87A12E5915702A6 

mais il est une autre exigence qui génère un hachage de mot de passe d'entrée, mais le hachage ne contiennent que des chiffres ou caractères. J'ai cherché une solution partout, que puis-je faire?

+0

L'utilisation de md5 n'est pas une bonne idée, c'est faible. –

+2

Votre hachage actuel ne contient que des nombres, ils sont en hexadécimal - convertissez-le en octal et vous n'aurez que des "chiffres". –

+0

@RC. Cela n'a rien à voir avec la question, bien que cela soit d'intérêt général. –

Répondre

0

Vous avez déjà un "numéro" - car les condensés MD5 ne sont que des nombres. Si vous devez les "afficher" sous forme de nombres, vous pouvez stocker le MD5 en tant que BigInteger en utilisant le constructeur String, int new BigInteger(str,16); (il s'agit d'un nombre de base 16 dans une chaîne).

Si vous avez besoin de la représentation décimale, vous pouvez utiliser la méthode toString de BigInteger; la représentation hexadécimale - ou n'importe quelle base, vraiment - peut être obtenue en utilisant la surcharge toString(int). L'entier est la 'base' que vous voulez représenter le nombre.

+1

Vous ne pouvez pas stocker MD5 dans 'long'. – Oleg

+0

s'il vous plaît, éditez la réponse pour la mettre dans un BigInteger? Je n'ai pas le temps maintenant, sinon je le réparerai plus tard. – iajrz

+0

@Oleg je l'ai changé. – iajrz