Maison >développement back-end >Problème PHP >java md5 hexadécimal en php

java md5 hexadécimal en php

WBOY
WBOYoriginal
2023-05-28 15:28:40643parcourir

Dans la transmission de données sur réseau, le cryptage est un élément très important. MD5 est un algorithme de chiffrement largement utilisé qui convertit les données de n'importe quelle longueur en une valeur de hachage de 128 bits. En Java, nous pouvons facilement utiliser l'algorithme MD5 pour crypter des données et les convertir en chaîne au format hexadécimal, mais si nous devons utiliser une telle chaîne cryptée en PHP, comment la convertir ?

Tout d’abord, nous devons comprendre la différence de codage de chaîne entre Java et PHP. En Java, les chaînes sont codées en UTF-16 par défaut, tandis qu'en PHP, le codage ASCII est utilisé par défaut. Par conséquent, lors de la conversion de chaîne, nous devons d’abord convertir l’encodage de chaîne.

En Java, nous pouvons utiliser le code suivant pour crypter MD5 la chaîne et la convertir en chaîne hexadécimale :

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {

    public static String getMD5(String message) {
        MessageDigest md;
        try {
            md = MessageDigest.getInstance("MD5");
            md.update(message.getBytes());
            byte[] mdBytes = md.digest();
            StringBuffer hexValue = new StringBuffer();
            for (int i = 0; i < mdBytes.length; i++) {
                int val = ((int) mdBytes[i]) & 0xff;
                if (val < 16) {
                    hexValue.append("0");
                }
                hexValue.append(Integer.toHexString(val));
            }
            return hexValue.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return "";
        }
    }

}

En PHP, nous pouvons utiliser le code suivant pour crypter MD5 la chaîne et la convertir en chaîne hexadécimale String :

function stringToMd5Hex($str) {
    $str = iconv('UTF-8', 'UTF-16LE', $str);
    $md5 = md5($str);
    $hex = '';
    for ($i = 0; $i < strlen($md5); $i += 2) {
        $hex .= chr(hexdec($md5[$i] . $md5[$i + 1]));
    }
    return bin2hex($hex);
}

Dans ce code, nous utilisons la fonction iconv pour convertir la chaîne de l'encodage UTF-8 en encodage UTF-16LE. Utilisez ensuite la fonction md5 intégrée de PHP pour le cryptage MD5. Enfin, utilisez la fonction chr pour convertir le résultat du chiffrement en chaîne binaire et utilisez la fonction bin2hex pour le convertir en chaîne hexadécimale.

Grâce à ce traitement, nous pouvons convertir le résultat du cryptage MD5 en Java en une chaîne hexadécimale utilisable en PHP pour réaliser une transmission de données cryptées entre Java et PHP.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:php modifier sqlArticle suivant:php modifier sql