本文整理汇总了C#中HashType.GetAlgorithm方法的典型用法代码示例。如果您正苦于以下问题:C# HashType.GetAlgorithm方法的具体用法?C# HashType.GetAlgorithm怎么用?C# HashType.GetAlgorithm使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HashType
的用法示例。
在下文中一共展示了HashType.GetAlgorithm方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Calculate
public static string Calculate(string path, HashType hashType, Action<int> callBack, CancellationToken token)
{
var hashAlgorithm = hashType.GetAlgorithm();
// 64 kb
const int STREAM_BUFFER_SIZE = 4096 * 16;
const int HASH_BUFFER_SIZE = 4096;
var buffer = new byte[HASH_BUFFER_SIZE];
var lastPercent = -1;
using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, STREAM_BUFFER_SIZE))
{
var fileSize = fs.Length;
long readed = 0;
while (true)
{
if (token.IsCancellationRequested)
return null;
var len = fs.Read(buffer, 0, buffer.Length);
if (readed + HASH_BUFFER_SIZE >= fileSize)
{
hashAlgorithm.TransformFinalBlock(buffer, 0, len);
return GetStringFromBytes(hashAlgorithm.Hash);
}
var handler = callBack;
if (handler != null)
{
var percent = (int)(100 * (readed / (float)fileSize));
if (percent != lastPercent)
{
lastPercent = percent;
handler(percent);
}
}
hashAlgorithm.TransformBlock(buffer, 0, len, null, 0);
readed += len;
}
}
}