Как проверить хэш md5 хранилища BLOB-объектов Azure в клиенте javascript? - PullRequest
0 голосов
/ 21 мая 2018

Пользователи могут загружать файлы в хранилище BLOB-объектов Azure через мой сервис веб-API.А у BLOB-объектов есть хэши MD5.

Теперь другой API позволяет пользователю загружать ранее загруженные файлы.API возвращает:

return File(blobFile, MediaTypeNames.Application.Octet, file.FileName);

Таким образом, клиент javascript получает байтовый массив с заголовком

Тип содержимого: application / octet-stream

Вопрос в том, как js-клиент проверяет, MD5 загруженного файла совпадает с тем, который находится в BLOB-объекте?

Я пробовал некоторые онлайн-инструменты MD5, и они не дают мне тот же MD5, что и BLOB-объект....

1 Ответ

0 голосов
/ 22 мая 2018

Я попробовал некоторые онлайн-инструменты MD5, и они не дают мне тот же MD5, что и BLOB-объект.

Онлайн-MD5 имеет различных алгоритмов с хэшем BLOB-объекта MD5 .

В приведенном ниже примере показано, как клиент может проверять хэш больших двоичных объектов MD5 после получения всех данных.

// Validate MD5 Value
var md5Check = System.Security.Cryptography.MD5.Create();
md5Check.TransformBlock(retrievedBuffer, 0, retrievedBuffer.Length, null, 0);     
md5Check.TransformFinalBlock(new byte[0], 0, 0);

// Get Hash Value
byte[] hashBytes = md5Check.Hash;
string hashVal = Convert.ToBase64String(hashBytes);

if (hashVal != blobRef.Properties.ContentMD5) 
{
     throw new InvalidDataException("MD5 Mismatch, Data is corrupted!");
}

Также при загрузке большого двоичного объекта вхранилище, если вы установите для параметра validate_content (bool) значение true, он вычислит хеш MD5 для каждого фрагмента большого двоичного объекта.

ХранилищеСервис проверяет хеш содержимого, которое поступило с хешем, который был отправлен.Это в первую очередь полезно для обнаружения битовых клипов в сети, если использование http вместо https, так как https (по умолчанию) уже будет проверяться.Обратите внимание, что этот хэш MD5 не хранится в BLOB-объекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...