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

发布于 2024-08-14 03:17:45 字数 39 浏览 9 评论 0原文

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

陌伤浅笑 2024-08-21 03:17:45

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}$");
}

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}$");
}
口干舌燥 2024-08-21 03:17:45

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

如果您查看它们的十六进制字符串表示形式,那么 sha1 将看起来像 40 个十六进制数字,而 md5 将看起来像 32 个十六进制数字。

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.

宛菡 2024-08-21 03:17:45

不存在 MD5 或 SHA-1 字符串这样的东西,至少没有标准化的字符串。您可以测试的只是字节数组的大小:MD5 为 16(输出大小为 128 位的哈希值),SHA-1 为 20 字节(输出大小为 160 位的哈希值),使用十六进制编码或Base 64 编码。

如果您使用md5sum,那么校验和通常显示为十六进制编码,使用小写字符(后跟文件名或标准输入的- )。通常首选十六进制,但哈希值也可能包含分隔符或使用不同的编码,例如 Base 64 或 Base 64 URL(等等)。

然而,您正在测试的字节大小可能属于完全不同的哈希,例如 RIPEMD 可能也具有相同的输出大小。或者它可能是具有相同字节数的另一个值。

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.

一杆小烟枪 2024-08-21 03:17:45

MD5验证器:

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

并删除字符串值的“-”。

MD5 verifier:

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

And remove "-" of the string value.

北风几吹夏 2024-08-21 03:17:45

正则表达式 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...");

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...");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文