如何正确计算QuickXorHash值

时间:2018-03-22 19:38:30

标签: onedrive

我正在尝试创建一个工具,使用QuickXorHash算法验证上传到OneDrive for Business的文件,他们在此提供了一个示例:https://docs.microsoft.com/en-us/onedrive/developer/code-snippets/quickxorhash

我遇到的问题是,在比较完全相同的文件时,我使用其代码得到的哈希值与OneDrive返回的json文件的哈希结果不匹配。

由于Microsoft没有提供有关如何使用示例代码的文档,因此我必须做出假设,因此我可能会错误地使用它。有没有人对此有任何见解?

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。问题在于我将散列字节数组转换为字符串的方式。我最初在网上找到的代码如下:

int i;
StringBuilder outPut = new StringBuilder(byteArray.Length);
for (i = 0; i < byteArray.Length; i++)
{
     outPut.Append(byteArray[i].ToString("x2"));
}
 return outPut.ToString();

但是,在做了一些更多的研究之后,我遇到了转换数组的正确方法,这更简单:

return Convert.ToBase64String(byteArray);

这会导致哈希值的字符串表示形式与OneDrive上的内容匹配。