首页 > 代码库 > winrt获取文件MD5码
winrt获取文件MD5码
//小文件public static string ComputeMD5(byte[] bytes) { var alg = HashAlgorithmProvider.OpenAlgorithm("MD5"); IBuffer buff = CryptographicBuffer.CreateFromByteArray(bytes); var hashed = alg.HashData(buff); var res = CryptographicBuffer.EncodeToHexString(hashed); return res; } public static byte[] StreamToBytes(Stream stream) { byte[] bytes = new byte[stream.Length];//这个地方会报内存不够,文件太大了 stream.Read(bytes, 0, bytes.Length); return bytes; }//大文件的话必须用数据流,不然会内存不够,一般大于50M的最好用流的形式比较好 public static async Task<string> ComputeMD5(Stream stream) { var alg = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Md5); var inputStream = stream.AsInputStream(); const uint capacity = 1000000000;//100M这个参数可以自己修改,根据自己的配置决定 var buffer = new Windows.Storage.Streams.Buffer(capacity); var hash = alg.CreateHash(); while (true) { await inputStream.ReadAsync(buffer, capacity, InputStreamOptions.None); if (buffer.Length > 0) hash.Append(buffer); else break; } string hashText = CryptographicBuffer.EncodeToHexString(hash.GetValueAndReset()).ToLower(); return hashText; }
使用例子:
StorageFile MYFile = await KnownFolders.DocumentsLibrary.GetFileAsync("791d5b3b142c6ba114eecc12ac2ff751.mp4");
Stream mystream = (await MYFile.OpenAsync(FileAccessMode.Read)).AsStream();
string txt2 = ComputeMD5(StreamToBytes(mystream));//使用正常获取,可能报错
string txt = await ComputeMD5(mystream);//使用流方式获取
winrt获取文件MD5码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。