Guys, i need a way so that i can mask the password on my program. I
want the password to appear as **** or something like that. I cant use
applets, awt or any other thing beyond our ICSE Std X syllabus. Threads
would be OK i guess but pls try avoiding it. Plz help
Andrew Thompson - 03 Dec 2006 10:34 GMT
Sub: I need help urgently.
Hire a consultant.
> Guys, i need a way so that i can mask the password on my program. I
> want the password to appear as **** or something like that.
Use a JPasswordField.
>...I cant use
> applets, awt or any other thing beyond our ICSE Std X syllabus.
The 'standard way' to pass an exam is to study for it,
rather than come to usenet and ask for 'codes'.
>...Threads
> would be OK i guess but pls try avoiding it.
Sure thing.
Andrew T.
Simon Brooke - 03 Dec 2006 10:48 GMT
> Guys, i need a way so that i can mask the password on my program. I
> want the password to appear as **** or something like that. I cant use
> applets, awt or any other thing beyond our ICSE Std X syllabus. Threads
> would be OK i guess but pls try avoiding it. Plz help
How the **** are we supposed to know what's in your syllabus? And you'd get
better help if you put something useful in the subject line.
If you're writing a console app, read a character from the input stream and
print an asterisk to the output stream; repeat until you get an end of
line character. Something like (untested):
public String getPassword( InputStream in, OutputStream out, String prompt)
{
StringBuffer passBuff = new StringBuffer();
boolean done = false;
out.print( prompt);
while ( ! done)
{
int c = in.read();
switch ( c)
{
case -1: /* EOF */
case '\n':
case '\r':
/* and any other characters you see as terminating */
out.println();
done = true;
break;
default:
passBuff.append( ( char)c);
out.print( '*');
break;
}
}
return passBuff.toString();
}
The while loop here may lose you marks for style; you should probably
recode it as a for loop. I used while primarily to make it clearer.

Signature
simon@jasmine.org.uk (Simon Brooke) http://www.jasmine.org.uk/~simon/
Q: Whats a webmaster?
A: Like a spider, but nowhere near as intelligent.
Oliver Wong - 04 Dec 2006 22:03 GMT
>> Guys, i need a way so that i can mask the password on my program. I
>> want the password to appear as **** or something like that.
[...]
> If you're writing a console app, read a character from the input stream
> and
> print an asterisk to the output stream; repeat until you get an end of
> line character.
I think to be able to usefully fulfill the requirements in a console
app, you'd need someway of disabling the echoing of input. AFAIK, Java
doesn't provide any mechanism for doing this. So for a console app, my
recommendation would be "Don't use Java" for this particular problem.
- Oliver
Mark Jeffcoat - 04 Dec 2006 23:49 GMT
>>> Guys, i need a way so that i can mask the password on my program. I
>>> want the password to appear as **** or something like that.
[quoted text clipped - 10 lines]
> doesn't provide any mechanism for doing this. So for a console app, my
> recommendation would be "Don't use Java" for this particular problem.
It looks like Java 1.6 supports this, in java.io.Console.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4050435
has related discussion, and some pointers to third-party packages
implementing various JNI attacks on the problem.

Signature
Mark Jeffcoat
Austin, TX
Gordon Beaton - 05 Dec 2006 07:14 GMT
> Guys, i need a way so that i can mask the password on my program. I
> want the password to appear as **** or something like that. I cant use
> applets, awt or any other thing beyond our ICSE Std X syllabus. Threads
> would be OK i guess but pls try avoiding it. Plz help
In a text console on any unix-like platform (you didn't specify
yours), you can do this to prevent the input from being displayed
while the password is entered:
http://groups.google.com/group/comp.lang.java.programmer/msg/a132c7feda18187a
If you want to display asterisks, you need to set "-icanon min 1" to
get character-at-a-time input, and do System.out.print("*") for each
character as it's typed.
/gordon

Signature
[ don't email me support questions or followups ]
g o r d o n + n e w s @ b a l d e r 1 3 . s e