.NET Framework에서 발견 된 XMLSerializer를 사용하여 직렬화하는 개체에 대한 HMAC를 생성해야합니다. 각 개체에는 개체 값 자체의 해시를 포함하지만 "HMAC"필드는 제외하고 "HMAC"라는 속성이 포함됩니다. CLR에 내장 된 솔루션에 대해 언급 한 this question을 찾았지만 호출 된 내용이나 사용 방법에 대해 자세히 설명하지 않았습니다..NET에서 XMLSerialized 개체에 대한 해시 서명 (HMAC)을 생성하는 가장 좋은 방법은 무엇입니까?
샘플 객체는 다음과 같이 보일 것입니다 :
[Serializable]
[XmlRoot("request", IsNullable = false)]
public class Request
{
[XmlElement(ElementName = "hmac")]
public string Hmac { get; set; }
[XmlElement(ElementName = "nonce")]
public string Nonce { get; set; }
[XmlElement(ElementName = "expiration")]
public DateTime Expiration { get; set; }
/* A bunch of other properties to be serialized */
private Request() { }
public Request(string hmac, string nonce, DateTime expiration)
{
Hmac = hmac;
Nonce = nonce;
Expiration = expiration;
}
}
HMAC 속성은 HMAC 개체 자체를 제외한 전체 개체의 직렬화로 설정해야합니다. 내 첫번째 생각은 포함 두 단계 직렬화, 어떤 종류의 설정됩니다
- 이 결과를 해싱 전체 오브젝트
- 일렬 첫 번째 패스
- 에 HMAC 개체에 xmlignore 속성을 설정을하고, HMAC 속성의 값을 설정합니다.
- 모든 것을 다시 직렬화하여 전송할 준비가되었습니다.
이 방법이 가장 좋은 방법일까요? 누군가는 전에 이것 같이 무엇이든을하고, 당신은 그것에 관하여가는의 청결한 방법 인 것을 찾아 냈는가 ???
"봉투"방식이 더 좋습니다. 봉투 아이디어는 물론 SOAP의 근본입니다. – Cheeso