熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

java 加密

2013-11-23 19:29:11  來源: Java核心技術 

   前言
  
    大家知道在登錄Microsoft Windows操作系統過程中在登錄窗口中需要用戶輸入注冊用戶名稱和密碼細心的讀者會發現用戶輸入的注冊用戶名稱內容為原碼字符顯示而注冊密碼內容為掩碼字符顯示例如同樣在兩各文本區中輸入字符a在用戶名文本區中顯示的是字符a而在密碼區中顯示的字符為掩碼*這就是所謂的密碼屏蔽輸入將輸入的密碼屏蔽回顯不僅增強了用戶私有信息的安全性更重要的是維護了計算機系統的穩定性和安全性
  
  
  
    Java以其語言的面向對象能力高安全性和Java平台的系統無關性等技術優勢在商務軟件開發過程中贏得了眾多程序設計人員的青睐JDK在AWT和JFC類庫中定義了用於密碼字符屏蔽的應用程序設計接口(API)使應用系統開發人員在編寫圖形用戶界面程序時能夠靈活地定義密碼回顯方式但是對於基於命令行方式的Java應用程序JDK沒有定義相應的密碼屏蔽策略程序設計人員必須編寫字符回顯控制代碼本文將通過對實例代碼的分析對基於JDK平台開發Java應用程序的密碼屏蔽輸入方法進行探討主要內容包括
  
  
  
    ●AWT組件對象密碼屏蔽方法
  
  
  
    ●JSwing組件對象密碼屏蔽方法
  
  
  
    ●Java命令行程序密碼屏蔽方法
  
  
  
     利用AWT組件實現密碼屏蔽輸入
  
  
  
    Java抽象窗口工具包(Abstract Window ToolkitAWT)是在JDK版本中定義的用於編寫Java圖形用戶界面程序的應用程序設計接口程序設計人員可以利用該包中定義的多種類型組件對象編寫具有用戶界面的應用程序
  
  
  
    為了實現用戶輸入信息的屏蔽可以利用AWT組件庫中定義的TextField對象該對象的定義繼承結構如下
  
  
  
  
  
  
  
  javalangObject
  
  
  
  |
  
  
  
  +javaawtComponent
  
  
  
  |
  
  
  
  +javaawtTextComponent
  
  
  
  |
  
  
  
  +javaawtTextField
  
  
  
  
  
  
  
    在該對象中定義了用於設置和維護用戶輸入字符回顯方式的方法這些方法的定義形式為
  
  
  
      char getEchoChar()獲取用戶定義的文本區回顯字符
  
  
  
      boolean echoCharIsSet()判斷是否定義了回顯字符
  
  
  
      void setEchoChar(char c)設置文本區回顯字符為字符c
  
  
  
    因此在讀者編寫的Java程序中可以在創建TextField對象實例後例如上述方法控制文本區回顯字符的方式下面的程序完整地演示了回顯字符的定義方式
  
  
  
  
  
  
  
  //PasswordMaskingDemojava
  
  
  
  import javaawt*;
  
  
  
  import javaawtevent*;
  
  
  
  import javaxswingJOptionPane;
  
  
  
  public class PasswordMaskingDemo
  
  
  
  {
  
  
  
  public static void main(String args[])
  
  
  
  {
  
  
  
  final Frame frmFrame = new Frame();
  
  
  
  Panel pnlPanel = new Panel();
  
  
  
  Label lblUsername = new Label(用戶名);
  
  
  
  Label lblPassword = new Label(密碼);
  
  
  
  final TextField txtUsername = new TextField(Anyomonus);
  
  
  
  final TextField txtPassword = new TextField( );
  
  
  
  txtUsernamesetEditable(false);
  
  
  
  txtPasswordsetEchoChar(*);
  
  
  
  Button btnButton = new Button(登錄);
  
  
  
  Button btnButton = new Button(其它用戶登錄);
  
  
  
  Button btnButton = new Button(關閉);
  
  
  
  btnButtonaddActionListener( new ActionListener()
  
  
  
  {
  
  
  
  public void actionPerformed(ActionEvent e)
  
  
  
  {
  
  
  
  if( (txtPasswordgetText())length() == )
  
  
  
  {
  
  
  
  JOptionPaneshowMessageDialog
  
  
  
      (frmFrame 密碼不能為空);
  
  
  
  return;
  
  
  
  }
  
  
  
  txtPasswordsetColumns();
  
  
  
  Systemoutprintln(Anyomonus用戶的密碼 +
  
  
  
        txtPasswordgetText() );
  
  
  
  }
  
  
  
  });
  
  
  
  btnButtonaddActionListener( new ActionListener()
  
  
  
  {
  
  
  
  public void actionPerformed(ActionEvent e)
  
  
  
  {
  
  
  
  txtUsernamesetEditable(true);
  
  
  
  }
  
  
  
  });
  
  
  
  btnButtonaddActionListener( new ActionListener()
  
  
  
  {
  
  
  
  public void actionPerformed(ActionEvent e)
  
  
  
  {
  
  
  
  Systemexit();
  
  
  
  }
  
  
  
  });
  
  
  
  pnlPaneladd(lblUsername);
  
  
  
  pnlPaneladd(txtUsername);
  
  
  
  pnlPaneladd(lblPassword);
  
  
  
  pnlPaneladd(txtPassword);
  
  
  
  pnlPaneladd(btnButton);
  
  
  
  pnlPaneladd(btnButton);
  
  
  
  pnlPaneladd(btnButton);
  
  
  
  frmFrameadd(pnlPanel);
  
  
  
  frmFramesetTitle(演示TextField對象的應用方法);
  
  
  
  frmFramepack();
  
  
  
  frmFrameshow();
  
  
  
  }
  
  
  
  }
  
  
  
  
  
  
  
    該程序運行的窗口形式如下圖所示
  
  
  
  
  
  
  
    圖 PasswordMaskingDemojava程序運行窗口
  
  
  
    在上述程序中與文本區回顯控制相關的代碼為
  
  
  
  
  
  
  
  final TextField txtPassword = new TextField( );
  
  
  
  txtPasswordsetEchoChar(*);
  
  
  
  
  
  
  
    在上面的代碼中首先創建初始內容為空可輸入個字符的TextField對象實例txtPassword後利用TextField對象中定義的setEchoChar方法設置該文本區的回顯字符為星號*從而實現輸入字符的掩碼因此總結為可以利用TextField對象中定義的setEchoChar方法實現AWT組件對象程序中的字符掩碼輸入和回顯控制
  
  
  
     利用JSwing組件對象實現密碼屏蔽輸入
  
  
  
    JSwing組件對象是輕量級Java組件對象其中定義了多種組件對象類型而且其外觀也更加新穎與AWT組件對象相對應在JSwing組件對象中也定義了JTextField對象用於用戶進行文本輸入那麼讀者是否會聯想利用對象中也定義的setEchoChar方法定義回顯字符呢?實際情況不是這樣在JTextField對象中沒有定義該方法而是以JTextField為父對象定義了用於進行密碼輸入的文本區對象JPasswordField該對象的定義繼承結構如下
  
  
  
  
  
  
  
  javalangObject
  
  
  
  |
  
  
  
  +javaawtComponent
  
  
  
  |
  
  
  
  +javaawtContainer
  
  
  
  |
  
  
  
  +javaxswingJComponent
  
  
  
  |
  
  
  
  +javaxswingtextJTextComponent
  
  
  
  |
  
  
  
  +javaxswingJTextField
  
  
  
  |
  
  
  
  +javaxswingJPasswordField
  
  
  
  
  
  
  
    在JPasswordField對象中定義了多種類型
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26940.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.