다음에 정의 된 MDaemon Minger 프로토콜 UDP 요청을 구성하려고합니다. specification. spec을 정확하게 해석한다고 가정하면 [email protected]
의 공유 암호가 U5TttqcKSw0jJcPHrHWb
인 사서함이 요청의 문자열 버전을 어떻게 표시해야합니까?MDaemon Minger UDP 데이터 그램 요청
[email protected] d=QTNCMDgxNDEwMUIzRkJDNTM4NTUzQjg1NkU5Rjk2Mjg=
나는 그러나 상태 코드는 항상 요청에 따라 전달 된 자격 증명이 잘못되었습니다 있음을 나타내는 '2'이며, 다시 응답을 얻을. 서버가 익명 조회를 허용하도록 설정되어 있지 않으므로 자격 증명을 보내야합니다. 내가 자격 증명 매개 변수를 작성하는 방식에서 올바른 일을하지 않을 것으로 생각됩니다.
나는 공유 비밀 증명을 요청과 함께 적절하게 보내고 있지만 서버는 그것이 유효하지 않다는 것을 알리고있다. 나는 공유 비밀 증명의 패키징과 전송에 내가 뭘 잘못하고 있는지 이해하지 못한다. 프로토콜 사양 및 샘플 코드에 대한 새로운 시각을 통해 자격 증명 전송 문제를 찾는 데 도움이되기를 바랍니다.
나는 다음과 같은 코드를 통해이 도착하고 있습니다 :
public bool IsValidUser(string emailAddress)
{
var digestText = _sharedSecret + ":" + emailAddress;
var digest = System.Text.Encoding.ASCII.GetBytes(CreateMD5(digestText));
string query = emailAddress + " d=" + System.Convert.ToBase64String(digest);
var sendBytes = Encoding.ASCII.GetBytes(query);
_udpClient.Send(sendBytes, sendBytes.Length);
IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
var results = Encoding.ASCII.GetString(_udpClient.Receive(ref remoteIpEndPoint));
return false;
}
public static string CreateMD5(string input)
{
// Use input string to calculate MD5 hash
using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
{
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
byte[] hashBytes = md5.ComputeHash(inputBytes);
// Convert the byte array to hexadecimal string
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("X2"));
}
return sb.ToString();
}
}