2012-11-08 12 views
5

Ich möchte den folgenden C# -Code in PHP umwandeln.Was ist das PHP-Äquivalent dieses C# -Codiercodes?

Der C# ist:

byte[] operation = UTF8Encoding.UTF8.GetBytes("getfaqs"); 
byte[] secret = UTF8Encoding.UTF8.GetBytes("Password"); 

var hmac = newHMACSHA256(secret); 
byte[] hash = hmac.ComputeHash(operation); 

Was ich habe in diesem gedreht:

$hash = hash_hmac("sha256", utf8_encode("getfaqs"), utf8_encode("Password")); 

Dann habe ich:

var apiKey = "ABC-DEF1234"; 
var authInfo = apiKey + ":" + hash 

//base64 encode the authorisation info 
var authorisationHeader = Convert.ToBase64String(Encoding.UTF8.GetBytes(authInfo)); 

Was ich denke, sollte sein:

$authInfo = base64_encode($apiKey . ":" . $hash); 

Oder

$authInfo = base64_encode(utf8_encode($apiKey . ":" . $hash)); 

aber nicht sicher, diese zweite Codierung bemerken verwendet Encoding.UTF8, nicht UTF8Encoding.UTF8.

Wie sollte der PHP-Code aussehen?

+2

'UTF8Encoding.UTF8' und' Encoding.UTF8 'sind gleichwertig. 'UTF8Encoding' erbt von'Encoding' und erhält als Ergebnis die 'UTF8'-Eigenschaft. –

Antwort

3

PHP-Strings sind bereits (Art von) byte[], PHP hat keine Codierung Bewusstsein. utf8_encode dreht tatsächlich ISO-8859-1 zu UTF-8, so dass es hier nicht benötigt wird.

Wenn diese Zeichenfolgen Literale in Ihrer Datei sind, muss diese Datei nur in der UTF-8-Codierung gespeichert werden.

Pass true zu hash_hmac als 4. Parameter und entfernen diesen utf8_encode Anrufe:

$hash = hash_hmac("sha256", "getfaqs", "Password", true); 

Auch Zeichenfolge Verkettungsoperator ist ., so:

$authInfo = base64_encode($apiKey . ":" . $hash); 
+0

danke für den Tippfehler - korrigiert. Immer noch nicht authentifizieren, aber ich denke, dass Ihr Code in Ordnung ist und wir zusätzliche Probleme haben – jmadsen

+0

@jmadsen ja, die 'C#' ist nicht abgeschlossen. Vor dieser Zeile: 'var apiKey =" ABC-DEF1234 "; var authInfo = apiKey + ":" + hash', 'hash' ist immer noch ein' byte [] ', also wie kann es zu einer Zeichenkette verkettet werden? – Esailija

Verwandte Themen