国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java 加密

2019-11-18 12:10:35
字體:
來源:轉載
供稿:網友

  1 前言
  
    大家知道,在登錄Microsoft Windows操作系統過程中,在登錄窗口中需要用戶輸入注冊用戶名稱和密碼。細心的讀者會發現:用戶輸入的注冊用戶名稱內容為原碼字符顯示,而注冊密碼內容為掩碼字符顯示。例如,同樣在兩各文本區中輸入字符"a",在用戶名文本區中顯示的是字符"a",而在密碼區中顯示的字符為掩碼"*",這就是所謂的密碼屏蔽輸入。將輸入的密碼屏蔽回顯,不僅增強了用戶私有信息的安全性,更重要的是維護了計算機系統的穩定性和安全性。
  
  
  
    java以其語言的面向對象能力、高安全性和Java平臺的系統無關性等技術優勢,在商務軟件開發過程中贏得了眾多程序設計人員的青睞。JDK在AWT和JFC類庫中定義了用于密碼字符屏蔽的應用程序設計接口(API),使應用系統開發人員在編寫圖形用戶界面程序時,能夠靈活地定義密碼回顯方式。但是,對于基于命令行方式的Java應用程序,JDK沒有定義相應的密碼屏蔽策略,程序設計人員必須編寫字符回顯控制代碼。本文將通過對實例代碼的分析,對基于JDK平臺開發Java應用程序的密碼屏蔽輸入方法進行探討,主要內容包括:
  
  
  
    ●AWT組件對象密碼屏蔽方法
  
  
  
    ●JSwing組件對象密碼屏蔽方法
  
  
  
    ●Java命令行程序密碼屏蔽方法
  
  
  
    2 利用AWT組件實現密碼屏蔽輸入
  
  
  
    Java抽象窗口工具包(Abstract Window Toolkit,AWT)是在JDK1.0版本中定義的用于編寫Java圖形用戶界面程序的應用程序設計接口,程序設計人員可以利用該包中定義的多種類型組件對象,編寫具有用戶界面的應用程序。
  
  
  
    為了實現用戶輸入信息的屏蔽,可以利用AWT組件庫中定義的TextField對象,該對象的定義繼續結構如下:
  
  
  
  
  
  
  
  java.lang.Object
  
  
  
  
  
  
  
  +--java.awt.Component
  
  
  
  
  
  
  
  +--java.awt.TextComponent
  
  
  
  
  
  
  
  +--java.awt.TextField
  
  
  
  
  
  
  
    在該對象中,定義了用于設置和維護用戶輸入字符回顯方式的方法,這些方法的定義形式為:
  
  
  
      char getEchoChar():獲取用戶定義的文本區回顯字符;
  
  
  
      boolean echoCharIsSet()判定是否定義了回顯字符;
  
  
  
      void setEchoChar(char c):設置文本區回顯字符為字符c。
  
  
  
    因此,在讀者編寫的Java程序中,可以在創建TextField對象實例后,例如上述方法控制文本區回顯字符的方式。下面的程序完整地演示了回顯字符的定義方式:
  
  
  
  
  
  
  
  //PassWordMaSKINgDemo.java
  
  
  
  import java.awt.*;
  
  
  
  import java.awt.event.*;
  
  
  
  import javax.swing.JOptionPane;
  
  
  
  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("", 8);
  
  
  
  txtUsername.setEditable(false);
  
  
  
  txtPassword.setEchoChar('*');
  
  
  
  Button BTnButton1 = new Button("登錄");
  
  
  
  Button btnButton2 = new Button("其它用戶登錄");
  
  
  
  Button btnButton3 = new Button("關閉");
  
  
  
  btnButton1.addActionListener( new ActionListener()
  
  
  
  {
  
  
  
  public void actionPerformed(ActionEvent e)
  
  
  
  {
  
  
  
  if( (txtPassword.getText()).length() == 0 )
  
  
  
  {
  
  
  
  JOptionPane.showMessageDialog
  
  
  
      (frmFrame, "密碼不能為空");
  
  
  
  return;
  
  
  
  }
  
  
  
  txtPassword.setColumns(16);
  
  
  
  System.out.  
  
  
        txtPassword.getText() );
  
  
  
  }
  
  
  
  });
  
  
  
  btnButton2.addActionListener( new ActionListener()
  
  
  
  {
  
  
  
  public void actionPerformed(ActionEvent e)
  
  
  
  {
  
  
  
  txtUsername.setEditable(true);
  
  
  
  }
  
  
  
  });
  
  
  
  btnButton3.addActionListener( new ActionListener()
  
  
  
  {
  
  
  
  public void actionPerformed(ActionEvent e)
  
  
  
  {
  
  
  
  System.exit(0);
  
  
  
  }
  
  
  
  });
  
  
  
  pnlPanel.add(lblUsername);
  
  
  
  pnlPanel.add(txtUsername);
  
  
  
  pnlPanel.add(lblPassword);
  
  
  
  pnlPanel.add(txtPassword);
  
  
  
  pnlPanel.add(btnButton1);
  
  
  
  pnlPanel.add(btnButton2);
  
  
  
  pnlPanel.add(btnButton3);
  
  
  
  frmFrame.add(pnlPanel);
  
  
  
  frmFrame.setTitle("演示TextField對象的應用方法");
  
  
  
  frmFrame.pack();
  
  
  
  frmFrame.show();
  
  
  
  }
  
  
  
  }
  
  
  
  
  
  
  
    該程序運行的窗口形式如下圖所示:
  
  
  
  
  
  
  
    圖1 PasswordMaskingDemo.java程序運行窗口
  
  
  
    在上述程序中,與文本區回顯控制相關的代碼為:
  
  
  
  
  
  
  
  final TextField txtPassword = new TextField("", 8);
  
  
  
  txtPassword.setEchoChar('*');
  
  
  
  
  
  
  
    在上面的代碼中,首先創建初始內容為空、可輸入8個字符的TextField對象實例txtPassword后,利用TextField對象中定義的setEchoChar方法設置該文本區的回顯字符為星號"*",從而實現輸入字符的掩碼。因此總結為:可以利用TextField對象中定義的setEchoChar方法,實現AWT組件對象程序中的字符掩碼輸入和回顯控制。
  
  
  
    3 利用JSwing組件對象實現密碼屏蔽輸入
  
  
  
    JSwing組件對象是輕量級Java組件對象,其中定義了多種組件對象類型,而且其外觀也更加新奇。與AWT組件對象相對應,在JSwing組件對象中也定義了JTextField對象,用于用戶進行文本輸入。那么,讀者是否會聯想利用對象中也定義的setEchoChar方法定義回顯字符呢?實際情況不是這樣。在JTextField對象中沒有定義該方法,而是以JTextField為父對象,定義了用于進行密碼輸入的文本區對象JPasswordField,該對象的定義繼續結構如下:
  
  
  
  
  
  
  
  java.lang.Object
  
  
  
  
  
  
  
  +--java.awt.Component
  
  
  
  
  
  
  
  +--java.awt.Container
  
  
  
  
  
  
  
  +--javax.swing.JComponent
  
  
  
  
  
  
  
  +--javax.swing.text.JTextComponent
  
  
  
  
  
  
  
  +--javax.swing.JTextField
  
  
  
  
  
  
  
  +--javax.swing.JPasswordField
  
  
  
  
  
  
  
    在JPasswordField對象中,定義了多種類型

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武川县| 沙洋县| 子洲县| 漯河市| 成安县| 大连市| 邮箱| 铁岭县| 德格县| 余干县| 若尔盖县| 长寿区| 得荣县| 奇台县| 益阳市| 论坛| 葫芦岛市| 育儿| 米泉市| 扶绥县| 新乡市| 慈利县| 乌兰县| 涡阳县| 买车| 藁城市| 宣化县| 神池县| 南靖县| 浦县| 富平县| 出国| 百色市| 海城市| 碌曲县| 丹江口市| 南和县| 太仓市| 灵川县| 郓城县| 鹿邑县|