MD5、SHA256等Hash算法的实时计算

简介: MD5、SHA256等Hash算法的实时计算

最近,在项目中,需要计算文件的hash值来对文件进行最终校验,在C#中,MD5、SHA256都是直接可用的。下面以MD5为例,

一般来说,计算文件hash值时,是加载一个文件,然后来读取并计算,如下:

MD5 md = MD5.Create();
buffer = Encoding.ASCII.GetBytes("abc");//这里abc表示从文件中读取的内容
md.TransformBlock(buffer, 0, buffer.Length, buffer, 0);
md.TransformFinalBlock(buffer, 0, 0);
Console.WriteLine(System.Convert.ToBase64String(md.Hash));

以上结算结果

kAFQmDzST7DWlj99KOF/cg==

对于这种方式,小文件来说还好,但是,当文件大小达到10GB左右时,计算耗时大概2Min左右,文件更大,则效果更差。因此,我们需要一种能够实时计算的方式。

 

实时计算hash值,

我们期望,在记录文件的过程中,直接计算hash值,等文件记录完毕时,直接生成相应的文件hash值。

talk is cheap,show you code.

            var buffer = new byte[0];
            MD5 md5 = MD5.Create();
            buffer = Encoding.ASCII.GetBytes("a");
            md5.TransformBlock(buffer, 0, buffer.Length, buffer, 0);
            buffer = Encoding.ASCII.GetBytes("b");
            md5.TransformBlock(buffer, 0, buffer.Length, buffer, 0);
            buffer = Encoding.ASCII.GetBytes("c");
            md5.TransformBlock(buffer, 0, buffer.Length, buffer, 0);
            md5.TransformFinalBlock(buffer, 0, 0);
            Console.WriteLine(System.Convert.ToBase64String(md5.Hash));
kAFQmDzST7DWlj99KOF/cg==

至此,两种方式结果相同,可知,可通过第二种方法来实时运用MD5等来计算hash值。

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
7月前
|
存储 负载均衡 算法
我们来说一说 Java 的一致性 Hash 算法
我是小假 期待与你的下一次相遇 ~
251 1
|
算法 Java 数据处理
Java中MD5加密算法的实现
Java中MD5加密算法的实现
|
存储 算法 安全
超级好用的C++实用库之sha256算法
超级好用的C++实用库之sha256算法
781 1
|
JavaScript 算法 前端开发
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
1787 1
|
算法 JavaScript 前端开发
消息摘要算法:MD5加密
消息摘要算法:MD5加密
331 1
|
算法 数据安全/隐私保护 C++
超级好用的C++实用库之MD5信息摘要算法
超级好用的C++实用库之MD5信息摘要算法
390 0
|
算法 安全 Java
Java中MD5加密算法的原理与实现详解
Java中MD5加密算法的原理与实现详解
|
算法 Java 数据处理
Java中MD5加密算法的实现
Java中MD5加密算法的实现
|
4月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
427 0
|
4月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
298 2