2009-07-10 15 views
9

मैं जावा में एक पासवर्ड मास्क करने की कोशिश कर रहा हूँ। सूर्य जावा ने निम्नानुसार पासवर्ड मास्क करने का एक तरीका सुझाया है।जावा 5 में पासवर्ड कैसे मास्क करें?

Masking a password

ऐसा नहीं है कि ऐसा करने के लिए एक आसान तरीका उपयोग करता है।

public void run() { 
    stop = true; 
    while (stop) { 
    System.out.print("\010*"); 
try { 
    Thread.currentThread().sleep(1); 
    } catch(InterruptedException ie) { 
     ie.printStackTrace(); 
    } 
    } 
} 

लेकिन इस दृष्टिकोण में कई कमीएं हैं।

  1. यदि उपयोगकर्ता तीर कुंजियों का उपयोग करता है + हटाए गए कुंजी को पासवर्ड प्रकट होता है।

  2. यदि उपयोगकर्ता गलती से एक ही समय में 2 कुंजी दबाता है (अत्यधिक उच्च टाइपिंग गति) कुछ पात्रों को मुखौटा नहीं मिलता है।

क्या आप लोग किसी भी तरह से सोचते हैं जो 100% सही मास्किंग प्राप्त कर सकता है?

उत्तर

10

Console.readPassword() का उपयोग करें।

+1

कंसोल जावा 6 के रूप में उपलब्ध है। हमारा संस्करण 1.5 :( –

4

अब आप System.console() का उपयोग कर सकते हैं;

Console c = System.console(); 
if (c == null) { 
    System.err.println("No console."); 
    System.exit(1); 
} 


char [] password = c.readPassword("Enter your password: "); 
+1

java.io.Console केवल जावा 6 में उपलब्ध है। उसका प्रश्न इंगित करता है कि वह जावा 5 का उपयोग कर रहा है। – piepera

1

कुछ syscalls (खिड़कियों और यूनिक्स पर) का उपयोग करके आप सांत्वना देने पात्रों की झलक निष्क्रिय कर सकते हैं। यह System.console() करता है, लेकिन यह जावा में भी काम करता है।

मैं JNA का उपयोग कर रहा jline के एक निजी शाखा में यूनिक्स और खिड़कियों के कुछ syscall मैप करने के लिए:

  • यूनिक्स पर मैं termios उपयोग कर रहा हूँ संरचना और tcgetattr/tcsetattr
  • विंडोज़ पर मैं GetConsoleMode और SetConsoleMode का उपयोग कर रहा हूं।

यदि आपको कोड उदाहरण की आवश्यकता है तो एक टिप्पणी छोड़ दें।

0

जेडीके 6.0 के साथ, आपके पास कंसोल समेत कक्षाओं के जावा स्रोत हैं: मैंने अभी सत्यापित किया है और इस वर्ग में केवल जावा 5.0 निर्भरताएं हैं।

तो, अपनी प्रोजेक्ट में, आप इस कंसोल क्लास की एक प्रति बना सकते हैं, और फिर readPassword विधि का उपयोग कर सकते हैं। मैंने कोशिश नहीं की लेकिन इसे काम करना चाहिए।

+0

बिल्कुल सही नहीं है। Echo() विधि मूल है तरीका। – notnoop

संबंधित मुद्दे