PHP와 C# .Net에서 SHA1 알고리즘을 일치시키는 데 문제가 있습니다. .Net 값과 일치하도록 PHP 코드를 수정해야합니다.PHP sha1이 일치하지 않습니다 .Net sha1Managed
DateTime dtNow = DateTime.parse("4/29/2013 11:50:18 PM");
//Create the site token header
var siteTokenMessageHeader = new SiteTokenMessageHeader
{
MessageId = "0289ED53-D69B-451C-BCBB-C7412D07AFFE",
//Unquie Id per message, use for auditing
TimeStamp = dtNow,
//Current Time
SiteId = _siteId,
};
//Construct Token
var token = string.Format(
"{0}:\"MessageId\":\"{1}\"\"SiteId\":\"{2}\"\"TimeStamp\":\"{3}\"",
_siteKey,
siteTokenMessageHeader.MessageId,
siteTokenMessageHeader.SiteId,
siteTokenMessageHeader.TimeStamp.ToString(new CultureInfo("en-US"))); //1/1/2000 12:00:00 AM
//Construct signature from token
var shaProvider = new SHA1Managed();
var rawKey = Encoding.Unicode.GetBytes(token);
var rawHash = shaProvider.ComputeHash(rawKey);
var signature = BitConverter.ToString(rawHash).Replace("-", "").ToLower();
siteTokenMessageHeader.SiteSignature = signature;
서명 변수 값 :
.NET의 코드는 다음과 같다 8cf9000e9b1a6da0e898bada5bf6dd8f6d17d72a
PHP 코드는 다음과 같다 :
$str = $SiteKey.':"MessageId":"0289ED53-D69B-451C-BCBB-C7412D07AFFE""SiteId":"'.$SiteId.'""TimeStamp":"4/29/2013 11:50:18 AM"';
$hash = sha1($str);
은 $ 해시 변수 값 : 1d2fb85fd63a14de0b5e0a95be253eac1a625128
동일한 주제가 몇 번이나 대답되었지만이 중 어느 것도 도움이되지 않습니다. 아무도 도움이 될 것입니다.
감사합니다. 사실 나는 그것을 잘못 작성했다. 두 경우 모두 "AM"을 사용하고 있습니다. – Saikat