Pour un prototype d'application, je crée une connexion utilisateur simple. Le mot de passe de l'utilisateur sera alors haché à l'aide de sha224 et transféré au back-end. Le problème auquel je suis confronté en ce moment est le suivant. Le mot de passe qui a été stocké dans la base de données (également haché avec sha224) semble être un peu différent du hash que j'envoie. J'utilise le code suivant pour créer les hachages.Différence entre android sha224 et python sha224
Compte tenu Mot de passe == Test
Python
from hashlib import sha224
sha224("test").hexdigest()
android
MessageDigest sha224 = MessageDigest.getInstance("SHA-224");
sha224.update(key.getBytes());
byte[] digest = sha224.digest();
StringBuffer buffer = new StringBuffer();
for(int i = 0; i < digest.length; i++) {
buffer.append(String.valueOf(Integer.toHexString(0xFF & digest[i])));
}
return buffer.toString();
Et maintenant sera produit ressemble à ceci et je signalerai les deux hash directement au-dessous L'un et l'autre. (Le premier est python et le second androïde)
90a3ed9e32b2aaf4c61c410eb925426119e1a9dc53d4286ade99a809 90a3ed9e32b2aaf4c61c41eb925426119e1a9dc53d4286ade99a89
Ils sont presque les mêmes, mais le hachage python a deux 0s plus. Est-ce que vous avez une idée pourquoi?
Il est intéressant de noter que tous les zéros ne sont pas supprimés, c'est-à-dire que les premiers chiffres sont 90. Que se passe-t-il? – whatnick
Ah ok 0 dans la position impaire numérotée sont abandonnées Je vais écrire une meilleure explication. – whatnick
@whatnick: La suppression d'autres zéros changerait la valeur. Seuls les zéros en tête ne modifient pas la valeur réelle. –