OneDriveと同じ方法でXOrHashを計算したいので、OD4Bバックエンドとの同期に必要な変更を検出できます。OneDrive XOrHashのC#での計算方法
私はXOrHashアルゴリズムの現在の実装では、ここにhttps://docs.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="
明らかに我々は不整合とどのように我々のようhttps://docs.microsoft.com/en-us/onedrive/developer/rest-api/resources/hashes
にハッシュがbase64文字列であることを、任意のコード例やヒントを使用することが提案されている以下のページよりも、この他の上の任意のドキュメントを見つけることができないされていますハッシュを計算する必要がありますし、文字列を返すことは非常に高く評価されます。サンプルファイルへ
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}
、期待と実際のハッシュ(今、あなたが期待しているし、実際のハッシュでサンプルファイル(小1)を追加する価値があるが、ファイルがありません) – Evk
上記のハッシュを計算するために使用したサンプルファイルへのリンクを追加しました –