Я пытаюсь понять эту строку кода из метода 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));
Какие части вызывают ваши проблемы? Можете ли вы опубликовать свой php-код? – CodesInChaos
Пожалуйста, найдите приведенный выше пример кода PHP. Не уверен, что строка $ signatureString верна! –
Я считаю, что это то, что вы хотите, предполагая, что вы ранее задали $ accessKey, $ methodName, $ timeStamp и $ accessID ранее в своем коде. Я точно не знаю, что вы получаете, когда вы устанавливаете raw_output в false, если он не правильно закодирован, вы всегда можете использовать base64encode(). – Jason