Différence base64_encode entre Java et PHP
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:
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:
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 ? :calim2: