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);
}
参考
在线文件MD5计算文章来源:https://www.toymoban.com/news/detail-804255.html
power-shell计算Azure Blob MD5文章来源地址https://www.toymoban.com/news/detail-804255.html
到了这里,关于Azure Blob MD5算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!