Salut à tous !

Je ne sais pas si je suis au bon endroit vu que me demande concerne à la fois Java et PHP.
Alors, j'ai récupéré une fonction en Java. Je dois faire la même chose mais en PHP (je ne peux pas modifier le code Java).

Voila la fonction Java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
String generateSignature () {
    byte[] Sequence = ("hello").getBytes("UTF-8");
    Mac HMAC = Mac.getInstance("HMACSHA256");
    HMAC.init("SECRET_KEY");
    byte[] Hash = HMAC.doFinal(Sequence);
    String Signature = new String(Base64.encodeBase64(Hash));
    return Signature;
}
La "traduction" en PHP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
function generateSignature() {
    $sequence = "hello";
    $encrypted = hash_hmac('sha256', $sequence, "SECRET_KEY");
    return base64_encode($encrypted);
}
Le résultat des deux fonctions n'est pas le même (ça serait trop beau^^).
Cependant, il semblerait que la génération de la clé soit bien identique.
En affichant les valeurs de "Hash" et "$encrypted", j'obtiens le même résultat.

C'est donc je pense l'encodage en base 64 qui n'est pas identique d'un langage à l'autre (encodage d'un array de bytes VS encodage d'un String).

Auriez-vous une solution ?