有没有办法测试字符串是否是MD5哈希?

时间:2009-11-11 14:17:56

标签: c# md5

我正在尝试将包含MD5哈希值和关键字(每行一个)的文本文件输入到C#应用程序中。有没有办法检查字符串是否是MD5哈希?我查看了MSDN,在MD5课程中找不到任何内容。

6 个答案:

答案 0 :(得分:18)

像这样使用正则表达式:

public static bool IsMD5(string input)
{
    if (String.IsNullOrEmpty(input))
    {
        return false;
    }

    return Regex.IsMatch(input, "^[0-9a-fA-F]{32}$", RegexOptions.Compiled);
}

答案 1 :(得分:9)

嗯,MD5哈希实际上只是二进制数据 - 如果你有一个字符串,那么它可能以某种方式编码,例如base64或hex。您可以测试字符串是否正确编码为正确长度的二进制(16字节)。尽管如此 - 虽然可能是二进制值,而这些值绝不是散列任何数据的结果,但我非常怀疑你能识别出这些值。理想情况下,当然不应该有这样的价值......

答案 2 :(得分:5)

MD5哈希值是128位值。它通常表示为长度为16的byte[],或者表示为string,其中每个字节由两个十六进制数字表示。 MD5哈希没有内部结构或任何类型的“签名”,允许您检测128位值是否为MD5哈希值。

答案 3 :(得分:3)

如果它的32字节长且0-9 a-f可能是md5,但不是100%

答案 4 :(得分:1)

要做的第一件事是检查文件以确定MD5哈希值是如何编码的,然后根据它设计匹配。

答案 5 :(得分:1)

我认为正确的一个是这个也包括大都会有时候哈希也会出现在首都,所以为什么会错过这个。

[0-9a-fA-F]{32}

[0-9a-f]{32}(?i)
相关问题