Ho una stringa in PHP che viene convertita in un array di byte e hash.Stringa con risultato hash Convert.ToChar (0) diverso da chr (0) in PHP quando hash hash_hmac
La stringa essendo convertiti alla matrice di byte assomiglia:
"g". chr (0). "cacca";
ho bisogno di array di byte equivalente in C# in modo da posso ottenere lo stesso hash ..
EDIT: Qui è il problema PIENA, con conseguente hash non è la stessa.
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);
codifica 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);
ho provato Base64 diversa, come:
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;
}
ma in ultima analisi, il problema sembra essere il ByteArray che è hash a causa di usa chr (0) php.
Presumo che si desidera qualcosa di simile: "g" + (char) 0 + "cacca".questa stringa in php significa che vuoi concatenare "g" con null e poi con "poo"? –
sì è corretto .. quindi ho bisogno di convertirlo in un array di byte .. ma non capisco come fare lo stesso tipo di stringa in C# .. l'array di byte e il successivo hash che faccio da esso sono diversi –
I ha risposto come renderlo come array di byte. –