MD5 Java Pattern - PullRequest
       1

MD5 Java Pattern

1 голос
/ 08 октября 2011

Я слежу за Учебным пособием BalusC по DAO , где есть эта функция:

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) (где password было извлечено из таблицы MySQL) всегда возвращает false, даже когда ему передается пароль с хешированием MD5, например 21232f297a57a5a743894a0e4a801fc3.

Я также пробовал следующие шаблоны:

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

, но они все равно всегда оцениваются в false.Кроме того, я очень сомневаюсь, что оригинальный код BalusC неверен.Что я делаю не так?

Спасибо!

1 Ответ

6 голосов
/ 08 октября 2011

см. http://download.oracle.com/javase/6/docs/api/java/lang/String.html#matches(java.lang.String)

метод match () принимает в качестве параметра регулярное выражение, поэтому, учитывая то, что вы написали в вопросе, он всегда будет возвращать false, так какпароль вряд ли будет регулярным выражением, которое соответствует "^ [a-f0-9] {32} $".

Попробуйте

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

вместо

...