分享
 
 
 

java加密

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

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对象中,定义了多种类型

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有