I'm trying to get a hashed string in php but the code that i'm trying to replicate is in node js and i get different result although i wrote the same thing
The code in NodeJS
const crypto = require('crypto');
const base64URLEncode = (str) => {
return str.toString('base64')
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=/g, '');
};
const sha256 = (buffer) => crypto.createHash('sha256').update(buffer).digest();
const createChallenge = (verifier) => base64URLEncode(sha256(verifier));
const verifier = "8uZj2CcGT9QS9uAiWOsN0EziwLnkfGEHEHHhWNOgOYpqsNrp97foyz4OK3TKQ3C6vE3T0FnN6Yo3WZ5A";
const code_challenge = createChallenge(verifier);
Here code_challenge = "5FSPNres_nZsFtubL3Zl21RmmGMytjCddX9tzW_nTAA"
My code in PHP
$code_verifier = "8uZj2CcGT9QS9uAiWOsN0EziwLnkfGEHEHHhWNOgOYpqsNrp97foyz4OK3TKQ3C6vE3T0FnN6Yo3WZ5A";
$code_challenge = rtrim(strtr(base64_encode(hash('sha256',$code_verifier)), '+/', '-_'), '=');
Here $code_challenge = "ZTQ1NDhmMzZiN2FjZmU3NjZjMTZkYjliMmY3NjY1ZGI1NDY2OTg2MzMyYjYzMDlkNzU3ZjZkY2Q2ZmU3NGMwMA"
The value of code_challenge isn't the same in the two codes although it should, i can't see where i made a mistake, can someone help please