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值
核心步骤
一共三步:
- 用传统md5算法对文件计算md5值
- 将md5值从16进制字符串转换为byte数组
- 基于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);
参考
以上是关于Azure Blob MD5算法的主要内容,如果未能解决你的问题,请参考以下文章
azure 会为容器中上传的所有 blob 计算 md5 校验和吗?
为啥没有使用逻辑应用自动生成 Azure Blob MD5 校验和?