C# 更快地生成MD5哈希值

9

我有一个项目,其中我被给定了1到20亿之间的数字的MD5哈希值,我必须编写一个分布式程序来通过暴力破解获得该数字。我已经成功编码并运行了该程序。我想知道是否有一种方法可以加速哈希值的生成?

这里是我当前用于生成哈希值的函数:

    static string generateHash(string input)
    {
        MD5 md5Hasher = MD5.Create();
        byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
        StringBuilder sBuilder = new StringBuilder();
        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }
        return sBuilder.ToString();
    }

感谢您的任何帮助。

3
生成这些数据并将其保存到文件中,然后再从文件中读取是一个明显的想法。 - Jon
在MD5对象仍然被定义的时候创建哈希可能会有所帮助。定义它,让它处理完毕,然后为下一代重新实例化它会消耗大量资源。 - Brad Christie
1个回答

11
你可以使用BitConverter.ToString函数。
static string generateHash(string input)
{
  MD5 md5Hasher = MD5.Create();
  byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
  return BitConverter.ToString(data);
}

注意,这个片段不会替换问题中的片段,因为它返回由连字符分隔的十六进制对字符串。 - eduherminio
只需将 .Replace("-", "") 添加到返回的值即可。 - Sani Huttunen
当然可以,但这样做并不总是能得到更快的MD5哈希生成器。 - eduherminio
现在谁还在使用MD5呢?(这个问题是来自2012年的) - Sani Huttunen
可能没有人会这样做,只是想提醒那些复制粘贴的人,如果他们期望与问题中相同的输入,则不要这样做 :) - eduherminio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接