MD5 Java模式

时间:2011-10-08 05:01:38

标签: java pattern-matching

我关注BalusC's DAO Tutorial,其中有这个功能:

private static String hashMD5IfNecessary(String password) {
    return !"^[a-f0-9]{32}$".matches(password) ? hashMD5(password) : password;
}

我加上:

<h:inputText value="#{myBean.password}" />

但是"^[a-f0-9]{32}$".matches(password)(从MySQL表中检索到password)总是返回false,即使它传递了MD5哈希密码,例如21232f297a57a5a743894a0e4a801fc3

我也尝试过以下模式:

  • [a-f0-9]{32}
  • [a-f0-9]{32}+

但他们仍然总是评估为false。此外,我非常怀疑BalusC的原始代码是错误的。我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:6)

请参阅http://download.oracle.com/javase/6/docs/api/java/lang/String.html#matches(java.lang.String)

matches()方法一个正则表达式作为参数,所以考虑到你在问题中写的内容,它总是返回false,因为密码不太可能是匹配的正则表达式“^ [A-f0-9] {32} $”。

尝试

password.matches("^[a-f0-9]{32}$") 

代替