【问题标题】:Calculate the MD5 hash from an online image从在线图像计算 MD5 哈希
【发布时间】:2020-09-24 12:03:55
【问题描述】:

我需要计算一张在线图片的MD5哈希

对于本地保存的图像,我尝试了这段代码,它按预期工作:

public static string GetHashFromFile(string fileName, HashAlgorithm algorithm)
{
    HashAlgorithm MD5 = new MD5CryptoServiceProvider();
    using (var stream = new BufferedStream(File.OpenRead(fileName), 100000))
    {
        return BitConverter.ToString(MD5.ComputeHash(stream)).Replace("-", string.Empty);
    }
}

如何获取在线文件的BufferedStream?

【问题讨论】:

  • 暂时下载图像,运行你的哈希,然后再次删除图像怎么样?

标签: c# image url buffer md5


【解决方案1】:

使用WebClient 类从给定地址下载数据。使用下载的字节数组创建一个MemoryStream对象作为BufferedStream对象的源流。

您有两种下载方式:

1.同步方式

static string GetHashFromUrl(string url)
{
    using (var wc = new WebClient())
    {
        var bytes = wc.DownloadData(url);

        using (var md5 = new MD5CryptoServiceProvider())
        using (var ms = new MemoryStream(bytes))
        using (var bs = new BufferedStream(ms, 100_000))
            return BitConverter.ToString(md5.ComputeHash(bs)).Replace("-", string.Empty);
    }
}

...和来电者:

void TheCaller()
{
    try
    {
        var hash = GetHashFromUrl(url);
        //...
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }            
}

2。异步方式

static async Task<string> GetHashFromUrlAsync(string url)
{
    using (var wc = new WebClient())
    using (var md5 = new MD5CryptoServiceProvider())
    {
        byte[] bytes = await wc.DownloadDataTaskAsync(url);
                
        using (var ms = new MemoryStream(bytes))
        using (var bs = new BufferedStream(ms, 100_000))
            return BitConverter.ToString(md5.ComputeHash(bs)).Replace("-", string.Empty);
    }
}

...和async 来电者:

async void TheCaller()
{
    try
    {
        var hash = await Task.Run(() => GetHashFromUrlAsync(url));
        //...
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }            
}

这两个函数都返回 this 照片的 FA544EB95534BA35AE9D6EA0B3889934 哈希,它的地址分配给调用者中的 url 变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 2011-12-08
    • 2012-07-12
    • 2017-01-27
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    相关资源
    最近更新 更多