C# 在Silverlight中序列化哈希
我有一个Silverlight应用程序。此应用程序将调用一个web服务(我已经编写)以获取客户列表。我试图生成一个表示客户列表的哈希代码。为了做到这一点,我在Silverlight应用程序和服务器端代码中编写了以下代码:C# 在Silverlight中序列化哈希,c#,serialization,hashcode,C#,Serialization,Hashcode,我有一个Silverlight应用程序。此应用程序将调用一个web服务(我已经编写)以获取客户列表。我试图生成一个表示客户列表的哈希代码。为了做到这一点,我在Silverlight应用程序和服务器端代码中编写了以下代码: public static string GetHashCode<T>(T data) { SHA256Managed crypto = new SHA256Managed(); try { // Serialize the object
public static string GetHashCode<T>(T data)
{
SHA256Managed crypto = new SHA256Managed();
try
{
// Serialize the object
byte[] serializedBytes;
using (var memoryStream = new MemoryStream())
{
var serializer = new DataContractSerializer(typeof(T));
serializer.WriteObject(memoryStream, data);
memoryStream.Seek(0, SeekOrigin.Begin);
serializedBytes = memoryStream.ToArray();
}
byte[] hashed = crypto.ComputeHash(serializedBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashed.Length; i++)
sb.Append(hashed[i].ToString("X2"));
return sb.ToString();
}
catch (Exception)
{
return string.Empty;
}
}
公共静态字符串GetHashCode(T数据)
{
SHA256Managed crypto=新的SHA256Managed();
尝试
{
//序列化对象
字节[]序列化的数据字节;
使用(var memoryStream=new memoryStream())
{
var serializer=新的DataContractSerializer(typeof(T));
serializer.WriteObject(memoryStream,data);
memoryStream.Seek(0,SeekOrigin.Begin);
serializedBytes=memoryStream.ToArray();
}
字节[]哈希=加密计算哈希(序列化字节);
StringBuilder sb=新的StringBuilder();
for(int i=0;i
我在服务器端的方法如下所示:
[OperationContract]
public List<Customer> GetCustomers()
{
List<Customer> customers = Customer.GetAll();
string hash = GetHashCode<List<Customer>>(customers);
return customers;
}
[运营合同]
公共列表GetCustomers()
{
List customers=Customer.GetAll();
字符串哈希=GetHashCode(客户);
返回客户;
}
在客户端,在我的Silverlight应用程序中,我的GetCustomersCompleted事件处理程序中包含以下内容:
string hash = GetHashCode<List<Customer>>(e.Result.ToList());
string hash=GetHashCode(e.Result.ToList());
请注意,我首先将事件处理程序结果转换为列表。原因是因为结果实际上是一个可观察的集合。我提出这个问题是因为我相信这就是我的问题所在
我的问题是,即使数据相同,我的哈希值在服务器端和客户端上也不同。这是基于我在手表窗口看到的。我觉得这与结果从服务器传递到应用程序时发生的序列化有关。然而,我不知道该如何解决这个问题。我需要一个散列数据,但我不知道如何让它们对齐。感谢您提供的任何帮助。只是出于好奇。。。为什么?在看hashig之前:您是否先比较了序列化的字节?我不确定DCS是否承诺使用完全相同的布局:只是它是否兼容。