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

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

像这样使用正则表达式:

public static bool IsMD5(string input) { if (String.IsNullOrEmpty(input)) { return false; } return Regex.IsMatch(input, "^[0-9a-fA-F]{32}$", RegexOptions.Compiled); } 

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

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

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

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

我认为正确的一个是这个也包括首都有时哈希也来自首都所以为什么错过了。

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

要么

 [0-9a-f]{32}(?i)