J'ai mes mots de passe codés en MD5 en C# et inséré dans ma base de données.Blackberry encoder MD5 différent de MD5 en C#
MD5 MD5Hasher = MD5.Create();
byte[] PasswordHash = MD5Hasher.ComputeHash(Encoding.Unicode.GetBytes(PasswordText.Value));
PasswordHash est inséré tel quel et ressemble 0x09C09E5B52580E477514FA .......... par exemple.
Dans l'application blackberry, j'obtiens le mot de passe, je veux l'encoder pour le passer à un service Web qui va comparer les deux mots de passe hachés. Le problème est mon résultat est différent du MD5 que je crée dans mon application Blackberry.
password = Crypto.encodeStringMD5(password);
Puis ci-dessous ma fonction:
public static String encodeStringMD5(String s) throws Exception {
byte[] bytes = s.getBytes();
MD5Digest digest = new MD5Digest();
digest.update(bytes, 0, bytes.length);
int length = digest.getDigestLength();
byte[] md5 = new byte[length];
digest.getDigest(md5, 0, true);
return convertToHex(md5);
}
private static String convertToHex(byte[] data) {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < data.length; i++) {
int halfbyte = (data[i] >>> 4) & 0x0F;
int two_halfs = 0;
do {
if ((0 <= halfbyte) && (halfbyte <= 9))
buf.append((char) ('0' + halfbyte));
else
buf.append((char) ('a' + (halfbyte - 10)));
halfbyte = data[i] & 0x0F;
} while(two_halfs++ < 1);
}
return buf.toString();
}
Il retourne quelque chose comme ceci: 07054da3aea1cc98377fe0 ..........
Toute idée comment je peux obtenir la même mot de passe hashed que je crée avec ma fonction C# dans le Blackberry?
Merci!
Les problèmes concernant le codage MD5 ont été résolus par d'autres. Je voudrais juste souligner que si vous êtes en train de hacher le mot de passe sur le client, puis en passant ce hachage au serveur pour le comparer avec le hachage dans la base de données, alors le hachage est devenu le mot de passe. Si quelqu'un est capable d'accéder à la base de données, il peut usurper l'identité d'un utilisateur en transmettant au serveur le hachage qu'il s'attend à voir. La sécurité d'avoir le mot de passe, et en effet d'utiliser un sault, est que même si le hachage est compromis, il n'expose pas le compte. Un clinet doit fournir le texte qui se cache dans le contenu de la base de données. – Richard