JPasswordField: Secure Input, Echo Char, and Strength Validation
JPasswordField: Secure Input, Echo Char, and Strength Validation
JPasswordField क्या है?
Java में जब हमें user से password input लेना होता है, तब हम JPasswordField का use करते हैं। ये class javax.swing package के अंदर आती है और JTextField की subclass होती है। इसका main काम है secure तरीके से password input लेना ताकि कोई भी character सीधे screen पर दिखाई न दे।
जब user password type करता है, तो actual characters की जगह कुछ symbols जैसे ‘*’ या ‘•’ दिखाई देते हैं। इसको हम Echo Character कहते हैं। इस तरह JPasswordField user input को visually hide करता है और security बढ़ाता है।
JPasswordField का Syntax और Constructor
JPasswordField को declare और initialize करने के लिए हम इसके constructor का use करते हैं। नीचे कुछ commonly used constructors दिए गए हैं:
JPasswordField()— Empty password field बनाता है।JPasswordField(int columns)— एक fixed width वाला password field बनाता है।JPasswordField(String text)— Predefined text के साथ password field बनाता है।JPasswordField(String text, int columns)— Text और width दोनों specify करता है।
Example:
JPasswordField passField = new JPasswordField(15);
ऊपर के code में हमने 15 columns का password field बनाया है जहाँ user password type करेगा।
JPasswordField के Important Methods
JPasswordField class में कई useful methods होते हैं जिनकी मदद से हम password input को control और validate कर सकते हैं।
| Method | Description |
|---|---|
setEchoChar(char c) | Display होने वाले echo character को set करता है, जैसे ‘*’ या ‘•’ |
getPassword() | Password को character array के रूप में return करता है |
setText(String text) | Password field में text set करता है |
getText() | Deprecated है — इसका use नहीं करना चाहिए |
echoCharIsSet() | Check करता है कि echo character set किया गया है या नहीं |
Example:
JPasswordField pf = new JPasswordField();
pf.setEchoChar('*');
char[] pass = pf.getPassword();
ऊपर दिए code में echo character ‘*’ set किया गया है और user द्वारा डाला गया password character array के रूप में प्राप्त किया गया है।
Echo Character क्या होता है?
जब भी user password type करता है, actual characters की जगह कुछ symbols display होते हैं। यही symbols Echo Characters कहलाते हैं। इससे कोई दूसरा व्यक्ति screen देखकर actual password नहीं पढ़ सकता।
Default रूप में Echo Character bullet (‘•’) होता है, लेकिन हम इसे manually change कर सकते हैं।
Example:
JPasswordField pf = new JPasswordField();
pf.setEchoChar('#');
अब जब भी user password टाइप करेगा, हर character की जगह ‘#’ दिखाई देगा। इससे password field visually secure हो जाता है।
getPassword() vs getText()
बहुत सारे beginners getText() का use password निकालने के लिए करते हैं, लेकिन यह गलत तरीका है। getText() method deprecated हो चुका है क्योंकि यह password को String के रूप में return करता है जो memory में लंबे समय तक रहता है और security risk पैदा करता है।
इसके बजाय हमेशा getPassword() का use करें क्योंकि यह character array return करता है जिसे use के बाद clear किया जा सकता है।
Example:
char[] pass = pf.getPassword();
String password = new String(pass);
Arrays.fill(pass, '0'); // clear password from memory
Password Strength Validation
Password strength check करना आज के time में बहुत ज़रूरी हो गया है। हम users को weak password enter करने से रोक सकते हैं और strong password suggest कर सकते हैं। इसके लिए कुछ basic rules apply किए जाते हैं जैसे:
- Minimum 8 characters होने चाहिए
- At least 1 Uppercase letter होना चाहिए
- At least 1 Lowercase letter होना चाहिए
- At least 1 Digit होना चाहिए
- At least 1 Special character होना चाहिए
Example Code for Password Strength Check:
import javax.swing.*;
import java.awt.event.*;
public class PasswordStrengthCheck {
public static void main(String[] args) {
JFrame f = new JFrame("Password Strength Validation");
JLabel l1 = new JLabel("Enter Password:");
JPasswordField pf = new JPasswordField(15);
JLabel result = new JLabel("");
l1.setBounds(20, 20, 150, 25);
pf.setBounds(150, 20, 150, 25);
result.setBounds(20, 60, 300, 25);
pf.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
String password = new String(pf.getPassword());
if (isStrong(password)) {
result.setText("Strong Password ✅");
} else {
result.setText("Weak Password ❌");
}
}
});
f.add(l1); f.add(pf); f.add(result);
f.setSize(400,150);
f.setLayout(null);
f.setVisible(true);
}
static boolean isStrong(String pass) {
return pass.length() >= 8 &&
pass.matches(".*[A-Z].*") &&
pass.matches(".*[a-z].*") &&
pass.matches(".*\\d.*") &&
pass.matches(".*[@#$%!^&*].*");
}
}
ऊपर के code में जब user password type करेगा, system real-time में उसकी strength check करेगा और बताएगा कि password strong है या weak।
Practical Example: Secure Login Form
अब देखते हैं कि JPasswordField को login form में कैसे use किया जाता है।
import javax.swing.*;
import java.awt.event.*;
public class SecureLogin {
public static void main(String[] args) {
JFrame f = new JFrame("Login Form");
JLabel userLabel = new JLabel("Username:");
JLabel passLabel = new JLabel("Password:");
JTextField username = new JTextField(15);
JPasswordField password = new JPasswordField(15);
JButton loginBtn = new JButton("Login");
JLabel msg = new JLabel("");
userLabel.setBounds(20, 20, 100, 25);
username.setBounds(120, 20, 150, 25);
passLabel.setBounds(20, 60, 100, 25);
password.setBounds(120, 60, 150, 25);
loginBtn.setBounds(120, 100, 80, 25);
msg.setBounds(20, 140, 300, 25);
loginBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String user = username.getText();
String pass = new String(password.getPassword());
if(user.equals("admin") && pass.equals("Java123@")) {
msg.setText("Login Successful ✅");
} else {
msg.setText("Invalid Credentials ❌");
}
}
});
f.add(userLabel); f.add(username);
f.add(passLabel); f.add(password);
f.add(loginBtn); f.add(msg);
f.setSize(350,220);
f.setLayout(null);
f.setVisible(true);
}
}
यह example practically दिखाता है कि कैसे JPasswordField secure login process के लिए use किया जाता है।
JPasswordField के Best Practices
- Always use
getPassword()instead ofgetText() - Password को
Stringमें unnecessarily store न करें - Echo Character को readable लेकिन identifiable रखें जैसे ‘*’
- Password validation के लिए regular expressions का use करें
- Memory में password को use के बाद clear कर दें
JPasswordField के Advantages
- Secure password input provide करता है
- Echo character से password hide रहता है
- Real-time password validation possible है
- UI में आसानी से integrate किया जा सकता है
Exam Point of View से Important Points
- Definition: JPasswordField एक secure text field होता है जो password input के लिए use किया जाता है।
- Package: javax.swing
- Superclass: JTextField
- Method: getPassword(), setEchoChar()
- Security Feature: Echo Character और Memory safety
- Practical Use: Login forms, Sign-up forms
Quick Revision Notes
| Concept | Details |
|---|---|
| Class Name | JPasswordField |
| Package | javax.swing |
| Superclass | JTextField |
| Purpose | Secure password input लेना |
| Key Method | getPassword(), setEchoChar() |
| Echo Character | ‘*’ या ‘•’ (customizable) |
| Validation | Strong password checking possible |
| Security | Characters hidden from screen |
| Use Case | Login, Signup, Authentication forms |