SHA256 в Go и PHP дают разные результаты

Я пытаюсь отправить хешированную строку SHA256 поверх HTTP на сервер, где я хочу выполнить аутентификацию, выполнив хэш SHA256 и проверив два совпадения. Для целей тестирования я использую одну и ту же строку, однако мои результаты не совпадают. Может ли это быть что-то со стандартными схемами кодирования для моих вызовов base64_encode? Благодарю.

В PHP я делаю:

$sha = hash("sha256", $url, true); $sha = base64_encode(urlencode($sha)); 

И в Go я делаю

 //convert string to byte slice converted := []byte(to_hash) //hash the byte slice and return the resulting string hasher := sha256.New() hasher.Write(converted) return (base64.URLEncoding.EncodeToString(hasher.Sum(nil))) 

Через некоторое время я смог понять это. Я стандартизовал как шестнадцатеричное кодирование. Для этого я изменил код следующим образом:

PHP:

 $sha = hash("sha256", $url, false); //false is default and returns hex //$sha = base64_encode(urlencode($sha)); //removed 

Идти:

 //convert string to byte slice converted := []byte(to_hash) //hash the byte slice and return the resulting string hasher := sha256.New() hasher.Write(converted) return (hex.EncodeToString(hasher.Sum(nil))) //changed to hex and removed URLEncoding