How do I check if a string is a valid md5 or sha1 checksum string

放肆的年华 提交于 2019-12-18 12:48:12

问题


I don't want to calculate a file's checksum, just to know if a given string is a valid checksum


回答1:


SHA1 verifier:

public boolean isValidSHA1(String s) {
    return s.matches("^[a-fA-F0-9]{40}$");
}

MD5 verifier:

public boolean isValidMD5(String s) {
    return s.matches("^[a-fA-F0-9]{32}$");
}



回答2:


Any 160-bit sequence is a possible SHA1 hash. Any 128-bit sequence is a possible MD5 hash.

If you're looking at the hex string representations of them, then a sha1 will look like 40 hexadecimal digits, and an md5 will look like 32 hexadecimal digits.




回答3:


There is no such thing as an MD5 or SHA-1 string, at least not one that is standardized. All you can test for is the size of the byte array: 16 for MD5 (a hash with an output size of 128 bits) or 20 bytes for SHA-1 (a hash with an output size of 160 bits) encoded using hexadecimal encoding or base 64 encoding.

If you use md5sum then generally the checksum is shown as hexadecimal encoding, using only lowercase characters (followed by the file name or - for standard input). Hexadecimals are generally preferred, but hashes may also contain separator character or use a different encoding such as base 64 or base 64 URL (etc. etc.).

The byte size you are testing for might however belong to an entirely different hash such as RIPEMD that may also have the same output size. Or it may be another value with the same amount of bytes.




回答4:


MD5 verifier:

public boolean isValidMD5(String s) {
return s.matches("[a-fA-F0-9]{32}");}

And remove "-" of the string value.




回答5:


RegExp SHA-1

public static final String SHA_1 = "^([0-9A-Fa-f]{2}[:]){19}([0-9A-Fa-f]{2})$";

public boolean isValidSHA1(String s) {
    return s.matches(SHA_1);
}

boolean isValidSHA1 = isValidSHA1("12:45:54:3A:99:24:52:EA...");


来源:https://stackoverflow.com/questions/1896715/how-do-i-check-if-a-string-is-a-valid-md5-or-sha1-checksum-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!