IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁(yè)網(wǎng)絡(luò)編程JAVA編程 → java 加密

java 加密

時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)

?  1 前言
  
  大家知道,在登錄Microsoft Windows操作系統(tǒng)過(guò)程中,在登錄窗口中需要用戶輸入注冊(cè)用戶名稱和密碼。細(xì)心的讀者會(huì)發(fā)現(xiàn):用戶輸入的注冊(cè)用戶名稱內(nèi)容為原碼字符顯示,而注冊(cè)密碼內(nèi)容為掩碼字符顯示。例如,同樣在兩各文本區(qū)中輸入字符"a",在用戶名文本區(qū)中顯示的是字符"a",而在密碼區(qū)中顯示的字符為掩碼"*",這就是所謂的密碼屏蔽輸入。將輸入的密碼屏蔽回顯,不僅增強(qiáng)了用戶私有信息的安全性,更重要的是維護(hù)了計(jì)算機(jī)系統(tǒng)的穩(wěn)定性和安全性。
  
  Java以其語(yǔ)言的面向?qū)ο竽芰?、高安全性和Java平臺(tái)的系統(tǒng)無(wú)關(guān)性等技術(shù)優(yōu)勢(shì),在商務(wù)軟件開(kāi)發(fā)過(guò)程中贏得了眾多程序設(shè)計(jì)人員的青睞。JDK在AWT和JFC類庫(kù)中定義了用于密碼字符屏蔽的應(yīng)用程序設(shè)計(jì)接口(API),使應(yīng)用系統(tǒng)開(kāi)發(fā)人員在編寫(xiě)圖形用戶界面程序時(shí),能夠靈活地定義密碼回顯方式。但是,對(duì)于基于命令行方式的Java應(yīng)用程序,JDK沒(méi)有定義相應(yīng)的密碼屏蔽策略,程序設(shè)計(jì)人員必須編寫(xiě)字符回顯控制代碼。本文將通過(guò)對(duì)實(shí)例代碼的分析,對(duì)基于JDK平臺(tái)開(kāi)發(fā)Java應(yīng)用程序的密碼屏蔽輸入方法進(jìn)行探討,主要內(nèi)容包括:
  
  ●AWT組件對(duì)象密碼屏蔽方法
  
  ●JSwing組件對(duì)象密碼屏蔽方法
  
  ●Java命令行程序密碼屏蔽方法
  
  2 利用AWT組件實(shí)現(xiàn)密碼屏蔽輸入
  
  Java抽象窗口工具包(Abstract Window Toolkit,AWT)是在JDK1.0版本中定義的用于編寫(xiě)Java圖形用戶界面程序的應(yīng)用程序設(shè)計(jì)接口,程序設(shè)計(jì)人員可以利用該包中定義的多種類型組件對(duì)象,編寫(xiě)具有用戶界面的應(yīng)用程序。
  
  為了實(shí)現(xiàn)用戶輸入信息的屏蔽,可以利用AWT組件庫(kù)中定義的TextField對(duì)象,該對(duì)象的定義繼承結(jié)構(gòu)如下:
  
  java.lang.Object
  |
  +--java.awt.Component
  |
  +--java.awt.TextComponent
  |
  +--java.awt.TextField
  
  在該對(duì)象中,定義了用于設(shè)置和維護(hù)用戶輸入字符回顯方式的方法,這些方法的定義形式為:
  
  char getEchoChar():獲取用戶定義的文本區(qū)回顯字符;
  
  boolean echoCharIsSet()判斷是否定義了回顯字符;
  
  void setEchoChar(char c):設(shè)置文本區(qū)回顯字符為字符c。

  因此,在讀者編寫(xiě)的Java程序中,可以在創(chuàng)建TextField對(duì)象實(shí)例后,例如上述方法控制文本區(qū)回顯字符的方式。下面的程序完整地演示了回顯字符的定義方式:  
  
  //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("關(guān)閉");
  btnButton1.addActionListener( new ActionListener()
  {
  public void actionPerformed(ActionEvent e)
  {
  if( (txtPassword.getText()).length() == 0 )
  {
  JOptionPane.showMessageDialog
  (frmFrame, "密碼不能為空");
  return;
  }
  txtPassword.setColumns(16);  
  System.out.println("Anyomonus用戶的密碼:" +
  
  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對(duì)象的應(yīng)用方法");
  frmFrame.pack();  
  frmFrame.show();  
  }  
  }  
  
? 該程序運(yùn)行的窗口形式如下圖所示:
  
  圖1 PasswordMaskingDemo.java程序運(yùn)行窗口
  
? 在上述程序中,與文本區(qū)回顯控制相關(guān)的代碼為:
  
  final TextField txtPassword = new TextField("", 8);
  txtPassword.setEchoChar('*');
    
  在上面的代碼中,首先創(chuàng)建初始內(nèi)容為空、可輸入8個(gè)字符的TextField對(duì)象實(shí)例txtPassword后,利用TextField對(duì)象中定義的setEchoChar方法設(shè)置該文本區(qū)的回顯字符為星號(hào)"*",從而實(shí)現(xiàn)輸入字符的掩碼。因此總結(jié)為:可以利用TextField對(duì)象中定義的setEchoChar方法,實(shí)現(xiàn)AWT組件對(duì)象程序中的字符掩碼輸入和回顯控制。
  
  3 利用JSwing組件對(duì)象實(shí)現(xiàn)密碼屏蔽輸入
 
  JSwing組件對(duì)象是輕量級(jí)Java組件對(duì)象,其中定義了多種組件對(duì)象類型,而且其外觀也更加新穎。與AWT組件對(duì)象相對(duì)應(yīng),在JSwing組件對(duì)象中也定義了JTextField對(duì)象,用于用戶進(jìn)行文本輸入。那么,讀者是否會(huì)聯(lián)想利用對(duì)象中也定義的setEchoChar方法定義回顯字符呢?實(shí)際情況不是這樣。在JTextField對(duì)象中沒(méi)有定義該方法,而是以JTextField為父對(duì)象,定義了用于進(jìn)行密碼輸入的文本區(qū)對(duì)象JPasswordField,該對(duì)象的定義繼承結(jié)構(gòu)如下: 
  
  java.lang.Object  
  |  
  +--java.awt.Component  
  |  
  +--java.awt.Container  
  |  
  +--javax.swing.JComponent  
  |  
  +--javax.swing.text.JTextComponent  
  |  
  +--javax.swing.JTextField  
  |  
  +--javax.swing.JPasswordField  
  
  在JPasswordField對(duì)象中,定義了多種類型

關(guān)鍵詞標(biāo)簽:java,加密

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門(mén)文章 eclipse中如何設(shè)置字體大小_eclipse字體大小設(shè)置方法 eclipse中如何設(shè)置字體大小_eclipse字體大小設(shè)置方法 jsp 實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì) jsp 實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì) Eclipse優(yōu)化設(shè)置教程_Eclipse卡頓優(yōu)化設(shè)置技巧 Eclipse優(yōu)化設(shè)置教程_Eclipse卡頓優(yōu)化設(shè)置技巧 JS截取字符串常用方法詳細(xì)整理 JS截取字符串常用方法詳細(xì)整理

相關(guān)下載

    人氣排行 JS驗(yàn)證日期格式是否正確 Java中3DES加密解密調(diào)用示例 Java技術(shù)-J2EE開(kāi)發(fā)日記-MyEclipse快捷鍵與插件大全 eclipse中如何設(shè)置字體大小_eclipse字體大小設(shè)置方法 Eclipse優(yōu)化設(shè)置教程_Eclipse卡頓優(yōu)化設(shè)置技巧 JavaScript基本語(yǔ)法-常量和變量 用Java刪除文件夾里的所有文件 100多個(gè)很有用的JavaScript函數(shù)以及基礎(chǔ)寫(xiě)法匯總