2009-12-13 17 views

回答

40

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

dfa应该提供几个DFA,这是奇怪而奇妙的吗? –

+1

不,它不是:-) – dfa

+0

答案中的正则表达式验证字符串长度大于40个字符的字符串,这应该解决它:'^ [a-fA-F0-9] {40} $' – michaeltintiuc

10

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

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

+3

因此请分别检查40位和32位十六进制数字 – cobbal

+0

Ha;我在编辑时添加了您的评论。 +1 –

+0

这个答案更好,因为它解释了原因。 –

0

MD5校验:

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

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

相关问题