如何检查字符串是否是有效的md5或sha1校验和字符串

yos*_*sis 20 java checksum md5 sha1

我不想计算文件的校验和,只是为了知道给定的字符串是否是有效的校验和

dfa*_*dfa 46

SHA1验证者:

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

MD5验证程序:

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

  • 这**不**表明使用的散列,它只是表明散列输出的大小与散列算法兼容,并且只有 **IF** 它以十六进制编码(这在某种程度上是标准化的,但基数 64 会也是一个很好的编码)。它也不会检测算法的类型,因为它可能是 RIPEMD160 而不是 SHA-1。它也不会检测是否使用了任何空格或分隔符。所以要小心;我至少会在文档中清楚地指出该函数的作用。 (2认同)

Jon*_*erg 11

任何160位序列都是可能的SHA1哈希.任何128位序列都是可能的MD5哈希.

如果您正在查看它们的十六进制字符串表示,那么sha1将看起来像40个十六进制数字,并且md5看起来像32个十六进制数字.

  • 所以分别检查一个40位和32位十六进制数 (3认同)