Ich versuche, eine SHA256 Hash-Zeichenfolge über HTTP an einen Server zu senden, wo ich authentifizieren möchte, indem Sie einen SHA256-Hash durchführen und die beiden übereinstimmen. Zu Testzwecken verwende ich die gleiche Zeichenfolge, aber meine Ergebnisse stimmen nicht überein. Könnte dies etwas mit Standardcodierungsschemas für meine base64_encode-Aufrufe sein? Vielen Dank.SHA256 in Go und PHP geben unterschiedliche Ergebnisse
In PHP ich tue:
$sha = hash("sha256", $url, true);
$sha = base64_encode(urlencode($sha));
Und in Go Ich mache
//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)))
stellen Sie sicher, die beiden Strings absolut identisch sind, bevor Sie sie anfangen zu arbeiten. Sie könnten ein verstecktes Zeichen (Zeilenumbruch, Leerzeichen, Tab usw.) am Ende einer der Sprachen haben, was den Hash-Wert komplett verändern würde. –
Stellen Sie sicher, dass Sie dieselbe Zeichenfolgencodierung verwenden. – SLaks
Ich benutze das Wort "Test" auf beiden Seiten fest programmiert, nur um sicher zu gehen, immer noch nicht funktioniert. – user387049