我不想计算文件的校验和,只是为了知道给定的字符串是否是有效的校验和
答案 0 :(得分:44)
SHA1验证者:
public boolean isValidSHA1(String s) {
return s.matches("^[a-fA-F0-9]{40}$");
}
MD5验证者:
public boolean isValidMD5(String s) {
return s.matches("^[a-fA-F0-9]{32}$");
}
答案 1 :(得分:10)
任何160位序列都是可能的SHA1哈希。任何128位序列都是可能的MD5哈希值。
如果您正在查看它们的十六进制字符串表示,那么sha1将看起来像40个十六进制数字,并且md5看起来像32个十六进制数字。
答案 2 :(得分:0)
MD5验证者:
public boolean isValidMD5(String s) {
return s.matches("[a-fA-F0-9]{32}");}
删除字符串值的“ - ”。
答案 3 :(得分:0)
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...");
答案 4 :(得分:0)
没有诸如MD5或SHA-1字符串之类的东西,至少没有一个标准化的东西。您可以测试的只是字节数组的大小:使用十六进制编码的MD5为16(用于输出大小为128位的散列)或20字节为SHA-1(用于输出大小为160位的散列)或基本64位编码。
如果使用md5sum
,则校验和通常显示为十六进制编码,仅使用 小写字符(后跟文件名或-
作为标准输入)。通常最好使用十六进制,但是散列也可以包含分隔符或使用其他编码,例如base 64或base 64 URL(等)。
但是,您要测试的字节大小可能属于完全不同的散列,例如RIPEMD,它们也可能具有相同的输出大小。或者它可能是另一个具有相同字节数的值。