网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.使用JSR-184里的Sprite3D对象(图).
.EMF编程使用.
.用JavaMail API编写可带附件的邮.
.类装入问题解密,第 2 部分: 基本.
.Java繁体中文处理完全攻略.
.将 Java Web 应用从 Windows 移植.
.使用的DES对称加密.
.Servlet2.3 API小介.
.Jar文件包间接及Jar命令开发实例.
.使用Java蓝牙无线通讯技术API(第.
.关于DB2使用JAVA在AIX(存储过程).
.Java 基本概念名词一览.
.保护Applet免遭“窃取”的小技巧.
.Mysql的最大连接数用java程序测试.
.Java中文问题详解(转).
.一个tcp/ip套节字编程的javabean.
.按位“异或”赋值运算符 (^=).
.将 Java 应用程序迁移到 .NET(1).
.javabean与ejb的区别.
.Java实时应用程序中的内存管理.

java 加密

发表日期:2008-1-5



  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.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对象的应用方法");
  
  
  
  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对象中,定义了多种类型
上一篇:.NET应用程序的授权模型使系统更易管理 人气:554
下一篇:.NET的“无触式”配置:一个新的开发趋势 人气:718
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐