一、题目

编写一个java程序,实现一个文本信息的加密。

二、要求

可视化界面,友好的输入和输出,文件的存取。

三、分析

所谓数据加密(data encryption)技术是指将一个信息(或称明文,plain text)经过加密钥匙(encryption key)及加密函数转换,变成无意义的密文(cipher text),而接收方则将此密文经过解密函数、解密钥匙(decryption key)还原成明文。

四、界面规划

登录验证界面

建立基本框架,基于swing中frame

各组件的属性

组件编号/类型 名称/属性
1 /jlabel lblnewlabel/用户名
2/jpasswordfield passwordfield/
3 /jbutton btnnewbutton/确定
4 /jtextfield textfield/
5 /jpasswordfield passwordfield/
6 /jbutton btnnewbutton_1/退出

(左边一列从上到下依次为1-2,右边一列从上到下依次为3-5)

五、功能实现

5.1 确定功能实现

当use_name和password都正确时,跳转到下一界面,否则按下正确按钮时,将输入的字符串重置为空。

	string use_name=textfield.gettext();
				string password;
				password=string.valueof(passwordfield.getpassword());
				if(use_name.equals("djc期待")&&password.equals("1234")) {
					
					signup.this.setvisible(false);
					jia_mi d=new jia_mi();//加密和解密类
					d.setvisible(true);
				}
				else {
					string nl="";
					textfield.settext(nl);
					passwordfield.settext(nl);
				}

5.2 退出功能实现

正常退出,程序正常执行结束退出

system.exit(0);

建立基本框架,基于swing中frame

各组件的属性

组件编号/类型 名称/属性
1 /jbutton btnnewbutton_2/<<翻译
2/jtextarea textarea/
3 /jbutton btnnewbutton_1/打开密文
4/jtextarea textarea_1/
5 /jbutton btnnewbutton/保存文本

(左边一列从上到下依次为1-2,右边一列从上到下依次为3-5)

多行文本输入框的功能与单行文本输入框的功能相同,只是它能显示更多的文字。因为单行文本输入框只能输入一行的文字,所以需要输入和显示较多的文字时,就要用到多行文本输入框。多行文本输入框是由 jtextarea 类实现的。

5.3 加密文本的产生

在caretupdate()函数中,先取到用户输入的字符然后依次将这些字符转为unicode编码加999重新以字符的编码赋值输出,显示在右边jtextarea中。

string str1=textarea.gettext();
				string str2="";
				char c;
				for(int i=0;i<str1.length();i++) {
					c=str1.charat(i);
					c=(char)(c+999);
					str2+=c;
				}
				textarea_1.settext(str2);

5.4 密码文件的保存

jfilechooser jfchooser=new jfilechooser();
				if(jfchooser.showsavedialog(null)==
						jfilechooser.approve_option) {
					file f=jfchooser.getselectedfile();
					try {
						filewriter fw=new filewriter(f);
						string str=textarea_1.gettext();
						fw.write(str);
						fw.close();
					}
					catch(ioexception e1) {
						e1.printstacktrace();
					}
				}

5.5 密码文件的解密

public void actionperformed(actionevent e) {
				jfilechooser fchooser=new jfilechooser();
				if(fchooser.showopendialog(null)==
						jfilechooser.approve_option) {
					file f=fchooser.getselectedfile();
					try {
						filereader fr=new filereader(f);
						try {
							int n=fr.read();
							string str="";
							char c;
							while(n!=-1) {
								c=(char)n;
								str+=c;
								n=fr.read();
							}
							textarea_1.settext(str);
							fr.close();
						}
						catch(ioexception e1) {
							e1.printstacktrace();
						}
					}
					catch(filenotfoundexception e1) {
						e1.printstacktrace();
					}
				}

5.6 <<翻译

加密过程的反过程。

 string str2=textarea_1.gettext();
				string str1="";
				for(int i=0;i<str2.length();i++) {
					char c=str2.charat(i);
					c=(char)(c-999);
					str1+=c;
				}
				textarea.settext(str1);
			}

六、功能测试

登录

账号和密码不同时为对时,账号框和密码框重置。

密码和账号同时为对时,进入加密和解密界面。

文本与加密文本的转换。

保存的文件。
打开密文方法与以上相同。

将密文(unicode编码)转换明文。
将程序导出为一个可执行的java软件

桌面可执行软件。
步骤:file-export-选择main函数所在类-选择导出的位置。

七、程序源码

7.1 signup.java

package 文本信息的加密与解密;

import java.awt.borderlayout;
import java.awt.eventqueue;
import java.awt.frame;

import javax.swing.jframe;
import javax.swing.jpanel;
import javax.swing.border.emptyborder;
import javax.swing.jlabel;
import javax.swing.jtextfield;
import javax.swing.jbutton;
import java.awt.event.actionlistener;
import java.awt.event.actionevent;
import javax.swing.jpasswordfield;

public class signup extends jframe {

	private jpanel contentpane;
	private jtextfield textfield;
	private jpasswordfield passwordfield;

	/**
	 * launch the application.
	 */
	public static void main(string[] args) {
		eventqueue.invokelater(new runnable() {
			public void run() {
				try {
					signup frame = new signup();
					frame.setvisible(true);
				} catch (exception e) {
					e.printstacktrace();
				}
			}
		});
	}

	/**
	 * create the frame.
	 */
	public signup() {
		setdefaultcloseoperation(jframe.exit_on_close);
		setbounds(100, 100, 450, 300);
		contentpane = new jpanel();
		contentpane.setborder(new emptyborder(5, 5, 5, 5));
		setcontentpane(contentpane);
		contentpane.setlayout(null);
		
		jlabel lblnewlabel = new jlabel("\u7528\u6237\u540d");
		lblnewlabel.setbounds(34, 27, 69, 26);
		contentpane.add(lblnewlabel);
		
		jlabel lblnewlabel_1 = new jlabel("\u5bc6\u7801");
		lblnewlabel_1.setbounds(34, 104, 69, 26);
		contentpane.add(lblnewlabel_1);
		
		textfield = new jtextfield();
		textfield.setbounds(153, 30, 164, 35);
		contentpane.add(textfield);
		textfield.setcolumns(10);
		
		jbutton btnnewbutton = new jbutton("\u786e\u5b9a");
		btnnewbutton.addactionlistener(new actionlistener() {
			public void actionperformed(actionevent e) {
				string use_name=textfield.gettext();
				string password;
				password=string.valueof(passwordfield.getpassword());
				if(use_name.equals("djc期待")&&password.equals("1234")) {
					
					signup.this.setvisible(false);
					jia_mi d=new jia_mi();
					d.setvisible(true);
				}
				else {
					string nl="";
					textfield.settext(nl);
					passwordfield.settext(nl);
				}
			}
		});
		btnnewbutton.setbounds(53, 194, 93, 23);
		contentpane.add(btnnewbutton);
		
		jbutton btnnewbutton_1 = new jbutton("\u9000\u51fa");
		btnnewbutton_1.addactionlistener(new actionlistener() {
			public void actionperformed(actionevent e) {
				system.exit(0);
			}
		});
		btnnewbutton_1.setbounds(234, 194, 93, 23);
		contentpane.add(btnnewbutton_1);
		
		passwordfield = new jpasswordfield();
		passwordfield.setbounds(153, 104, 164, 24);
		contentpane.add(passwordfield);
	}
}

7.2 jia_mi.java

package 文本信息的加密与解密;

import java.awt.eventqueue;
import java.awt.frame;
import javax.swing.jframe;
import javax.swing.jpanel;
import javax.swing.border.emptyborder;
import java.awt.event.actionlistener;
import java.io.file;
import java.io.filenotfoundexception;
import java.io.filereader;
import java.io.filewriter;
import java.io.ioexception;
import java.awt.event.actionevent;
import javax.swing.jtextarea;
import javax.swing.jbutton;
import javax.swing.jfilechooser;
import javax.swing.event.caretlistener;
import javax.swing.event.caretevent;

public class jia_mi extends jframe {

	private jpanel contentpane;

	/**
	 * launch the application.
	 */
	public static void main(string[] args) {
		eventqueue.invokelater(new runnable() {
			public void run() {
				try {
					jia_mi frame = new jia_mi();
					frame.setvisible(true);
				} catch (exception e) {
					e.printstacktrace();
				}
			}
		});
	}

	/**
	 * create the frame.
	 */
	public jia_mi() {
		setdefaultcloseoperation(jframe.exit_on_close);
		setbounds(100, 100, 630, 404);
		contentpane = new jpanel();
		contentpane.setborder(new emptyborder(5, 5, 5, 5));
		setcontentpane(contentpane);
		contentpane.setlayout(null);
		
		jtextarea textarea_1 = new jtextarea();
		textarea_1.setwrapstyleword(true);
		textarea_1.setlinewrap(true);
		textarea_1.setbounds(356, 97, 187, 164);
		contentpane.add(textarea_1);
		
		jtextarea textarea = new jtextarea();
		textarea.setwrapstyleword(true);
		textarea.setlinewrap(true);
		textarea.addcaretlistener(new caretlistener() {
			public void caretupdate(caretevent arg0) {
				string str1=textarea.gettext();
				string str2="";
				char c;
				for(int i=0;i<str1.length();i++) {
					c=str1.charat(i);
					c=(char)(c+999);
					str2+=c;
				}
				textarea_1.settext(str2);
			}
		});
		textarea.setbounds(35, 97, 187, 164);
		contentpane.add(textarea);
		
		jbutton btnnewbutton = new jbutton("\u4fdd\u5b58\u6587\u672c");
		btnnewbutton.addactionlistener(new actionlistener() {
			public void actionperformed(actionevent e) {
				jfilechooser jfchooser=new jfilechooser();
				if(jfchooser.showsavedialog(null)==
						jfilechooser.approve_option) {
					file f=jfchooser.getselectedfile();
					try {
						filewriter fw=new filewriter(f);
						string str=textarea_1.gettext();
						fw.write(str);
						fw.close();
					}
					catch(ioexception e1) {
						e1.printstacktrace();
					}
				}
			}
		});
		btnnewbutton.setbounds(360, 303, 93, 23);
		contentpane.add(btnnewbutton);
		
		jbutton btnnewbutton_1 = new jbutton("\u6253\u5f00\u5bc6\u6587");
		btnnewbutton_1.addactionlistener(new actionlistener() {
			public void actionperformed(actionevent e) {
				jfilechooser fchooser=new jfilechooser();
				if(fchooser.showopendialog(null)==
						jfilechooser.approve_option) {
					file f=fchooser.getselectedfile();
					try {
						filereader fr=new filereader(f);
						try {
							int n=fr.read();
							string str="";
							char c;
							while(n!=-1) {
								c=(char)n;
								str+=c;
								n=fr.read();
							}
							textarea_1.settext(str);
							fr.close();
						}
						catch(ioexception e1) {
							e1.printstacktrace();
						}
					}
					catch(filenotfoundexception e1) {
						e1.printstacktrace();
					}
				}
			}
		});
		btnnewbutton_1.setbounds(397, 31, 93, 23);
		contentpane.add(btnnewbutton_1);
		
		jbutton btnnewbutton_2 = new jbutton("<<\u7ffb\u8bd1");
		btnnewbutton_2.addactionlistener(new actionlistener() {
			public void actionperformed(actionevent e) {
				string str2=textarea_1.gettext();
				string str1="";
				for(int i=0;i<str2.length();i++) {
					char c=str2.charat(i);
					c=(char)(c-999);
					str1+=c;
				}
				textarea.settext(str1);
			}
		});
		btnnewbutton_2.setbounds(129, 31, 93, 23);
		contentpane.add(btnnewbutton_2);
	}

	public jia_mi(frame f) {
		// todo 自动生成的构造函数存根
	}
}

到此这篇关于java可视化之实现文本的加密和解密的文章就介绍到这了,更多相关java实现文本的加密和解密内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!