Ich habe eine Zeichenfolge in PHP, die in ein Byte-Array konvertiert und Hashed wird.String mit Convert.ToChar (0) Hash-Ergebnis anders als Chr (0) in PHP beim Hash Hash_Hmac
die Zeichenfolge in dem Byte-Array umgewandelt wird wie folgt aussieht:
"g". chr (0). "Kacke";
Ich muß gleichwertig Byte-Array in C#, so dass ich den gleichen Hash bekommen ..
EDIT: Hier ist das vollständige Problem, Hash resultiert, ist nicht das gleiche.
PHP
$api_secret = '5432919427bd18884fc2a6e48b65dfba48fd9a1a46e3468b52fadbc6d6b463425';
$data = 'payment_currency=USD&group_orders=0&count=100&nonce=1385689989977529';
$endpoint = '/info/orderbook';
$signature = hash_hmac('sha512', $endpoint . chr(0) . $data, $api_secret);
$result = base64_encode($signature);
C#
var apiSecret = "5432919427bd18884fc2a6e48b65dfba48fd9a1a46e3468b52fadbc6d6b463425";
var data = "payment_currency=USD&group_orders=0&count=100&nonce=1385689989977529";
var endPoint = "/info/orderbook";
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
String message = endpPoint + Convert.ToChar(0) + data;
var hmacsha512 = new HMACSHA512(encoding.GetBytes(message));
var result = Convert.ToBase64String(hmacsha512.Hash);
Ich habe versucht, verschiedene Base64-Kodierung wie:
public static string ByteToString(byte[] buff)
{
string sbinary = "";
for (int i = 0; i < buff.Length; i++)
sbinary += buff[i].ToString("X2"); /* hex format */
return sbinary;
}
aber letztlich das Problem scheint die byteArray zu sein, die wegen gehasht der chr (0) php verwendet.
Ich nehme an, Sie so etwas wie dies wollen: "g" + (char) 0 + "poo".Bedeutet diese Zeichenkette in PHP, dass du "g" mit null und dann mit "poo" verketten willst? –
ja, das ist richtig .. dann muss ich es in eine Byte-Array konvertieren .. aber ich verstehe nicht, wie man die gleiche Art von Zeichenfolge in C# .. die Byte-Array und anschließende Hash ich daraus machen sind unterschiedlich –
I beantwortet, wie dies als Byte-Array zu machen. –