Azure Blob MD5算法

Posted 老邋遢

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azure Blob MD5算法相关的知识,希望对你有一定的参考价值。

Azure Blob MD5算法

文章目录

背景

笔者所在项目采用Azure Blob来作为文件存储解决方案, 上传的大文件需要一种机制来验证文件的完整性, 而业内通用的解决方案就是用MD5来做校验.

Azure Blob在我们上传文件且没有指定Content MD5时, 就会自动帮我们计算文件的MD5值.

通过Microsoft Azure Storage Explorer工具右键查看任何文件的Properties时, 可以看到该文件的MD5值

但是该文件通过文件MD5在线计算工具得到的结果却大相径庭

通过调查得知Azure Blob的Content MD5有自己的计算方式(WTF???!!!)

通过不断Bing Search & Coding, 终于在本地算出来了和Azure Blob一样的MD5值

核心步骤

一共三步:

  1. 用传统md5算法对文件计算md5值
  2. 将md5值从16进制字符串转换为byte数组
  3. 基于byte数组计算base64编码后的字符串

Java代码示例

    @Test
    void testAzureBlobMD5() 
        //计算文件MD5
        String md5String = null;
        try (FileInputStream inputStream = new FileInputStream(yourFilePath)) 
            md5String = DigestUtils.md5DigestAsHex(inputStream);
         catch (IOException e) 
            e.printStackTrace();
        
        System.out.println("md5String: " + md5String);
        //16进制String转bytes数组
        byte[] bytes = HexUtils.fromHexString(md5String);
        //base64编码
        String blobMD5 = Base64.getEncoder().encodeToString(bytes);
        System.out.println("blobMD5: " + blobMD5);
    

参考

在线文件MD5计算

power-shell计算Azure Blob MD5

以上是关于Azure Blob MD5算法的主要内容,如果未能解决你的问题,请参考以下文章

Azure Blob MD5算法

azure 会为容器中上传的所有 blob 计算 md5 校验和吗?

为啥没有使用逻辑应用自动生成 Azure Blob MD5 校验和?

Python 操作 Azure Blob Storage

Azure Storage用法:使用Blob Storage

Azure Blob数据迁移工具