2012-03-09 9 views
2

Я пытаюсь понять эту строку кода из метода C# (.Net) для создания подписи. Тем не менее, я хотел бы сделать то же самое в PHP, но не совсем понимаю, что он делает в C#.HMACSHA1 от C# до PHP

Интересно, может ли какой-либо разработчик .net помочь мне интерпретировать код ниже в «английском»?

Большое спасибо

HMAC hasher; 

      Byte[] utf8EncodedString = Encoding.UTF8.GetBytes(String.Format("{0}:{1}:{2}", MethodName, TimeStamp, AccessID)); 

      hasher = HMACSHA1.Create(); 

      hasher.Key = Encoding.UTF8.GetBytes(AccessKey); 

      Byte[] hashResult = hasher.ComputeHash(utf8EncodedString); 

      return Convert.ToBase64String(hashResult); 

Вот мой PHP код. Это верно?

$ signatureString = $ methodName. ':'. $ TimeStamp. ':'. $ AccessID;
return hash_hmac ('sha1', $ signatureString, $ accessKey, false);

Обновление: 30-05-2012

Просто получил его на работу теперь

$signature = base64_encode(hash_hmac('sha1', $signatureString, $accessKey,true)); 
+0

Какие части вызывают ваши проблемы? Можете ли вы опубликовать свой php-код? – CodesInChaos

+0

Пожалуйста, найдите приведенный выше пример кода PHP. Не уверен, что строка $ signatureString верна! –

+0

Я считаю, что это то, что вы хотите, предполагая, что вы ранее задали $ accessKey, $ methodName, $ timeStamp и $ accessID ранее в своем коде. Я точно не знаю, что вы получаете, когда вы устанавливаете raw_output в false, если он не правильно закодирован, вы всегда можете использовать base64encode(). – Jason

ответ