Is there a way to test if a string is an MD5 hash?

前端 未结 6 932
误落风尘
误落风尘 2020-12-16 20:38

I am trying to input a text file that contains MD5 hashes and keywords (one per line) into a C# app. Is there a way to check if a string is an MD5 hash? I looked on MSDN a

相关标签:
6条回答
  • 2020-12-16 21:06

    Well, an MD5 hash is really just binary data - if you've got a string then it's presumably encoded in some fashion, e.g. base64 or hex. You can test whether the string is correctly encoded for the right length of binary (16 bytes). That's all though - while there may be binary values which are never the result of hashing any data, I highly doubt that you can recognise such values. Ideally, there should be no such values, of course...

    0 讨论(0)
  • 2020-12-16 21:09

    First thing to do is examine the file to work out how the MD5 hashes are encoded, then design a match based on that.

    0 讨论(0)
  • 2020-12-16 21:10

    A MD5 hash is a 128 bit value. It is usually represented as a byte[] with a length of 16, or as a string where each byte is represented by two hexadecimal digits. A MD5 hash has no internal structure or any kind of 'signature' that allows you detect if a 128 bit value is a MD5 hash or not.

    0 讨论(0)
  • 2020-12-16 21:11

    if its 32 bytes long and 0-9 a-f its probably md5, but not 100%

    0 讨论(0)
  • 2020-12-16 21:13

    Use Regex like this:

    public static bool IsMD5(string input)
    {
        if (String.IsNullOrEmpty(input))
        {
            return false;
        }
    
        return Regex.IsMatch(input, "^[0-9a-fA-F]{32}$", RegexOptions.Compiled);
    }
    
    0 讨论(0)
  • 2020-12-16 21:25

    I think the correct one is this one that includes also the capitals sometimes hashes come also in capitals so why miss that.

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

    or

    [0-9a-f]{32}(?i)
    
    0 讨论(0)
提交回复
热议问题