我不想计算文件的校验和,只是想知道给定的字符串是否是有效的校验和
问问题
21994 次
5 回答
56
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}$");
}
于 2009-12-13T14:55:07.277 回答
14
任何 160 位序列都是可能的 SHA1 哈希。任何 128 位序列都是可能的 MD5 散列。
如果您正在查看它们的十六进制字符串表示形式,那么 sha1 看起来像 40 个十六进制数字,而 md5 看起来像 32 个十六进制数字。
于 2009-12-13T14:47:20.280 回答
1
没有像 MD5 或 SHA-1 字符串这样的东西,至少没有标准化的字符串。您可以测试的只是字节数组的大小:MD5 为 16(输出大小为 128 位的散列)或 SHA-1(输出大小为 160 位的散列)为 20 个字节,使用十六进制编码或base 64 编码。
如果您使用md5sum
,则校验和通常显示为十六进制编码,仅使用小写字符(后跟文件名或-
用于标准输入)。通常首选十六进制,但哈希也可能包含分隔符或使用不同的编码,例如 base 64 或 base 64 URL(等等)。
但是,您正在测试的字节大小可能属于完全不同的散列,例如RIPEMD,它也可能具有相同的输出大小。或者它可能是具有相同字节数的另一个值。
于 2019-12-05T21:58:39.220 回答
-1
MD5 验证器:
public boolean isValidMD5(String s) {
return s.matches("[a-fA-F0-9]{32}");}
并删除字符串值的“-”。
于 2015-02-28T12:02:39.303 回答
-1
正则表达式 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...");
于 2018-09-06T01:35:00.583 回答