Que dois-je faire si Java md5 est incohérent ? Solution au problème des valeurs md5 incohérentes des caractères chinois Java
Tutoriel recommandé : "Java learning"
Obtenez une valeur cryptée via le test de la méthode principale , et appelez-le via une requête de servlet. Une valeur chiffrée est obtenue, qui chiffre les mêmes caractères chinois, mais les résultats sont différents.
S'il est crypté en anglais, il n'y aura pas de problème de ce type.
La raison réside dans le codage des caractères chinois. Lors du cryptage, définissez le codage sur UTF-8 et le problème est résolu.
public static String EncoderByMd5(String str) { String result = ""; MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); // 这句是关键 md5.update(str.getBytes("UTF-8")); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } byte b[] = md5.digest(); int i; StringBuffer buf = new StringBuffer(""); for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if (i < 0) i += 256; if (i < 16) buf.append("0"); buf.append(Integer.toHexString(i)); } result = buf.toString(); return result; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!