2013-08-02 1 views
0

У меня есть значение pinNumber. Как замаскировать его (т.е.) сказать, если мой pinNumber равен 1234 и замаскировать его четырьмя символами звездочки, а не показывать цифры. Это маскированное значение будет показано на веб-странице с помощью jsp.Как замаскировать значение в java?

+3

вероятно <входной тип =» пароль "/>? – svz

+0

Как вы будете показывать свой пароль в jsp? Почему вы хотите замаскировать свой пароль в своих Java-классах, а не при рендеринге его на экране? – Filip

ответ

2

В какой-то момент вашего кода вы преобразуете число в строку для отображения. На данный момент, вы можете просто вызвать метод replaceAll струны, чтобы заменить все символы 0-9 с символом *:

s.replaceAll("[0-9]", "*") 

хорошо - это то, как вы делаете это непосредственно в Java. В JSP позаботиться о вас, как показывают другие плакаты, если вы выберете тип «пароль» на вашем входе.

2
<input type="PASSWORD" name="password"> 

Если вы собираетесь отобразить пароль на этикетке, просто отображать 5 или 6 символов звездочки, как вы не хотите, чтобы дать им ключи, делая длину этого ярлыка с длиной пароля.

0

Вы создаете форму, как, что

<form action="something" method="post"> 
pinNumber:<input type="password" name="pass"/> 
<input type="submit" value="OK"/> 
</form> 

то изменит в *

0

Этот код может помочь вам.

class Password { 
     final String password; // the string to mask 

     Password(String password) { this.password = password; } // needs null protection 

     // allow this to be equal to any string 
     // reconsider this approach if adding it to a map or something? 

     public boolean equals(Object o) { 
      return password.equals(o); 
     } 
     // we don't need anything special that the string doesnt 

     public int hashCode() { return password.hashCode(); } 

     // send stars if anyone asks to see the string - consider sending just 
     // "******" instead of the length, that way you don't reveal the password's length 
     // which might be protected information 

     public String toString() { 
      StringBuilder sb = new StringBuilder(); 
      for(int i = 0; < password.length(); i++) 
       sb.append("*"); 
      return sb.toString(); 
     } 
    } 
0

Я использую следующий код в своем приложении и отлично работает.

public class Test { 
    public static void main(String[] args) { 
     String number = "1234"; 
     StringBuffer maskValue = new StringBuffer(); 
     if(number != null && number.length() >0){ 
      for (int i = 0; i < number.length(); i++) { 
       maskValue.append("*"); 
      } 
     } 
     System.out.println("Masked Value of 1234 is "+maskValue); 
    } 
} 
Ans - Masked Value of 1234 is **** 
0

Два пути (это будет маскировать все charecters не только цифры):

private String mask(String value) { 
    StringBuilder sb = new StringBuilder(); 
    for(int i = 0; i < value.length(); sb.append("*"), i++); 
    return sb.toString(); 
} 

или:

private String mask(String value) { 
    return value.replaceAll(".", "*"); 
} 

Я использую второй

 Смежные вопросы

  • Нет связанных вопросов^_^