質問

Javaでパスワードをマスクしようとしています。Sun Java は、次のようにパスワードをマスクする方法を提案しています。

パスワードのマスキング

それを行うには簡単な方法を使用します。

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%正しいマスキングを実現する方法はありますか?

役に立ちましたか?

解決

を使用 Console.readPassword() のます。

他のヒント

私はちょうど検証し、このクラスでは唯一のJava 5.0の依存関係を持っている。

は、JDK 6.0を使用すると、コンソールを含む、クラスのJavaソースを持っています。

だから、あなたのプロジェクトでは、あなたがこのコンソールクラスのコピーを作成し、readPasswordメソッドを使用することができます。私は試していないが、それは動作するはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top