2012-03-09 51 views
2

我想了解這些代碼從C#(.Net)方法創建一個簽名。但是,我想在PHP中做同樣的事情,但不太清楚它在C#中的作用。從C#的HMACSHA1到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);

更新:2012-05-30

剛拿到它的工作現在

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

哪些部分會導致你的問題?你能發佈你的PHP代碼嗎? – CodesInChaos 2012-03-09 14:20:33

+0

請在上面找到我的PHP示例代碼。不知道$ signatureString是否正確! – 2012-03-09 14:24:36

+0

我相信這就是你想要的,假設你已經在你的代碼中早先適當地設置了$ accessKey,$ methodName,$ timeStamp和$ accessID。當你將raw_output設置爲false時,我不完全知道你會得到什麼,如果它沒有正確編碼,你總是可以使用base64encode()。 – Jason 2012-03-09 14:30:12

回答