2011-09-14 17 views
3

私はこの小さなATMアプリケーションをJava(CLI)で作成しました。最初は「コード:」を持っていて、ユーザーはそれを入力してください。そしてJavaアプリケーションでは、 String(またはint?)のようなコード= 1234;それがうまくいけば、間違っていない場合は、3回失敗した場合はもう一度やり直してください。Java CLIアプリケーションでパスワードをマスキング

どのように見えるのですか?私はマスクされたパスワードの後、数時間にわたりグーグルグーグルをしていて、幸運なことなくさまざまな種類のコードを試しました。文字列をアスタリスクに変換する単純なものがほしいだけです。

は、現在、私のパスワードマスクは次のようになります。

java.io.Console cons; 
char[] passwd; 

if ((cons = System.console()) != null && (passwd = cons.readPassword("[%s]", "Code:")) != null) 

しかし、私は、コードにパスワードを設定する方法(知らない)ことはできませんよ。

+0

現在動作していないものは何ですか? – jwd

+0

私は現在使用しているコードで私の最初の投稿を編集しました。 – Michael

+1

「私は何時間もグーグルで遊んでいた」について...おそらく、Googleの使い方はわからないでしょう。 "javaコマンドラインパスワードマスキング"の最初の検索結果は、必要なものだけです。 – jFrenetic

答えて

5

クラスjava.io.ConsolereadPasswordメソッドを使用してください。

ConsoleAPI documentationには、平文でエコーすることなくコンソールウィンドウからパスワードを読み取る方法の例があります。

編集

マイケルは、このコードは、ユーザーがそれを表示せずにコンソールウィンドウにキーワードを入力させることです。ユーザーがこれを実行すると、パスワードは変数passwdに格納されます。あなたが本当に欲しいのは、まったく異なるものです。パスワードを尋ねる他のプログラムがあり、あなたのプログラムがそのパスワードを自動的に入力したいと思っています。

本当にやりたいことなら、クラスConsoleを使う必要はありません。 java.awt.Robotクラスを使用して、別のアプリケーションのキーストロークを入力することもできます(ただし、コンソールウィンドウで動作するかどうかはわかりません - 試してみてください)。

+0

これは私が現在使用しているものですが、どのようにパスワードを設定するのですか? – Michael

+0

@Michael:「パスワードを設定する」という意味を説明してください。あなたの例から、 'char [] passwd'変数があります。これはパスワードテキストで埋められます。何をもっとしたいですか? * *あなたはパスワードを "設定"したいですか? – jwd

+0

もし私がchar [somepassword] passwdを入れたら、 「somepassword」の行は赤で強調表示されます。 私はchar [] passwd = somepasswordを試しました。とchar ['p'] passwd;それの誰もが動作しません。 – Michael

-1

このJavaを見てください。Java article ...さまざまな方法があります。

具体的には、setEchoChar()メソッドでAWTのTextFieldクラスを使用する方法と、別のスレッドを実行してコンソールアプリケーションでタイプされた文字を置き換えるメソッドを示しています。

+0

私はそれがGUIでのみ動作すると思いますか? – Michael

+0

私の心の中で最初に現れたのは、もっと速かったからです:)ええ、それはJava 6以前の方法です。 – jFrenetic

+0

@Michael、もっと慎重に読んでください。 "コマンドライン入力マスキング" – jFrenetic

0

このサイトは、あなたがやろうとしているまさにかなり多くの例があります:http://download.oracle.com/javase/tutorial/essential/io/cl.html

は徹底的であるためには、hereは同様のチュートリアルへtwoより多くのリンクです。


彼らはあなたの質問に答えるのですか?あなたのコメントに基づいて


、おそらくあなたは正確にJava構文を理解していません。

あなたが書き込むことはできません。

char["mypassword"] passwd; 

を私はあなたの代わりに意味を考える:

String str = "mypassword"; 
char[] passwd = str.toCharArray(); 

更新

このコードを試してみてください。

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

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

c.println("Password is:"); 
c.println(new String(passwd)); 
+0

もし私が次のようなものを試してみたら、 'String str =" mypassword "; char [] passwd = str.toCharArray(); \t \t \t IF((短所= System.console())= NULL &&(のpasswd = cons.readPassword( "[%のS]"、 "コード"!))= NULL) {.. .... mycode } ' アプリケーションは動作しますが、パスワードはありません。私は空のパスワードでアプリにログインすることができます。 – Michael

+0

@マイケル:私の更新を参照してください - それは動作しますか?パスワードが正しく出力されますか? – jwd

+0

エラー:コンソールをタイプ – Michael

関連する問題