Цель: загрузить файл в Azure хранилище BLOB-объектов и установить MD5, который может быть проверен при загрузке файла пользователем.
Использование Azure CLI Powershell.
Get-FileHash -Algorithm MD5 .\AutoSetup.zip
Algorithm Hash Path
--------- ---- ----
MD5 693EF0DB938308AC2C362F50F7CB9F9F C:\MyFiles\AutoSetup.zip
az storage blob upload --account-name mystorageaccount --container-name mycontainername --file AutoSetup.zip --name Autosetup2.zip --content-md5 693EF0DB938308AC2C362F50F7CB9F9F
Finished[#############################################################] 100.0000%
The MD5 value specified in the request is invalid. MD5 value must be 128 bits and base64 encoded. ErrorCode: InvalidMd5
<?xml version="1.0" encoding="utf-8"?><Error><Code>InvalidMd5</Code><Message>The MD5 value specified in the request is invalid. MD5 value must be 128 bits and base64 encoded.
RequestId:9f27334a-801e-0028-6db4-3539c5000000
Time:2020-05-29T12:28:23.7677258Z</Message></Error>
Edit 1:
Я также пытался получить ha sh этим способом
$someFilePath = "C:\MyFiles\AutoSetup.zip"
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes($someFilePath)))
Write-Host $hash
69-3E-F0-DB-93-83-08-AC-2C-36-2F-50-F7-CB-9F-9F
Кажется, что независимо от того, что я делаю, MD5, который для файла возвращается 693EF0DB938308AC2C362F50F7CB9F9F
, но Azure не принимает его ...
Редактировать 2:
Я сгенерировал случайный 128-битный строка $B&E)H@McQfTjWnZ
и приступил к ее кодированию в Base64, что дало мне JEImRSlIQE1jUWZUalduWg==
. Когда я пытаюсь загрузить большой двоичный объект с THAT ha sh, я получаю другое сообщение об ошибке:
The MD5 value specified in the request did not match with the MD5 value calculated by the server. ErrorCode: Md5Mismatch
Приведенное выше делает смысл, потому что я только что создал случайную 128-битную кодировку base64 ha sh. Однако теперь мне интересно, почему команда Powershell Get-FileHash
дает мне то, что кажется неправильным?
Что может вызывать ошибку?