gpt4 book ai didi

c# - 如何在 C# 中计算 OneDrive XOrHash

转载 作者:行者123 更新时间:2023-11-30 20:28:23 24 4
gpt4 key购买 nike

我们希望以与 OneDrive 相同的方式计算 XOrHash,以便我们可以检测到与 OD4B 后端同步所需的任何更改。

我有当前使用的 XOrHash 算法的实现,可以在这里找到 https://learn.microsoft.com/en-us/onedrive/developer/code-snippets/quickxorhash

然而,没有任何建议可以在我们的代码中计算相同的散列来匹配 OD4B 提供给我们的散列。

我们使用上面链接中提供的 XOrHash 算法为我们提供哈希的字节数组,其典型长度为 20 个字节。

public static byte[] ComputeHash(string filePath)
{
using (var quickXor = XOrHash.Create())
{
using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
return quickXor.ComputeHash(stream);
}
}
}

public static string ConvertHexToString(this byte[] bytes)
{
return Convert.ToBase64String(bytes);
}

returns "4FPisLqvTiuaxUVVz6Zk+RxMClE=" OD4B tells us the hash is "LmpqMT5KKX4ATcd372ZTyVr3gIk="

很明显,我们不匹配,除了下一页建议使用散列是 base64 字符串 https://learn.microsoft.com/en-us/onedrive/developer/rest-api/resources/hashes 之外,无法找到任何关于此的文档

任何关于我们应该如何计算散列然后返回字符串的示例代码或提示将不胜感激。

示例文件链接:https://dnqa-my.sharepoint.com/:p:/g/personal/autoslave10_dnqauk_co_uk/EcPZl9l2eXNImfD0paFXKyoBHdZwt5mCMRemLKU9wNYIYg?e=63c7632212d948238dd9696c90a11963

OD4B JSON

{"@odata.context":"omitted","@odata.type":"#oneDrive.item","@odata.id":"omitted","@odata.etag":"\"{D997D9C3-7976-4873-99F0-F4A5A1572B2A},2\"","@odata.editLink":"omitted","createdDateTime":"2017-12-04T17:07:40Z","id":"omitted","lastModifiedDateTime":"2017-12-04T17:07:40Z","name":"pptx001.pptx","file":{"hashes":{"quickXorHash":"LmpqMT5KKX4ATcd372ZTyVr3gIk="},"mimeType":"application/vnd.openxmlformats-officedocument.presentationml.presentation"},"size":29765}

最佳答案

这样做:

XOrHash.Create()

您实际上并没有使用快速异或算法。 Create()HashAlgorithm 类的静态方法,它创建一些默认的哈希算法实例(我记得是 SHA1)。所以你实际调用的是:

HashAlgorithm.Create()

相反,这样做:

using (var quickXor = new XOrHash())

关于c# - 如何在 C# 中计算 OneDrive XOrHash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47650931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com