Java可视化之实现文本的加密和解密

一、题目

编写一个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实现文本的加密和解密内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java必懂的冷知识点之Base64加密与解密

    为了安全地进行数据传输,就需要对数据进行加密与解密操作,Base64就是Java提供的加密处理器.本博客主要讲解Base64工具类的使用以及加密和解密信息操作实现. Base64是一种直接利用64个可打印字符来表示二进制数据的算法,也是网络传输中较为常见的一种加密算法.从JDK1.8版本开始提供java.util.Base64的工具类,同时提供了两个Base64的内部类实现数据加密与解密操作. [数据加密]java.util.Base64.Encoder, 对象获取方法:public stati

  • 如何通过Java实现加密、解密Word文档

    前言 对一些重要文档,我们为保证其文档内容不被泄露,常需要对文件进行加密,查看文件时,需要正确输入密码才能打开文件.下面介绍了一种比较简单的方法给Word文件加密以及如何给已加密的Word文件解除密码保护. 使用工具:Free Spire.Doc for Java 2.0.0(免费版) Jar文件导入: 方法1:通过官网下载控件包.在程序下新建一个directory目录,并命名(本示例中命名为lib):将控件包lib文件夹下的jar(如下图1)拷贝到程序中新建的目录下.复制jar文件后,鼠标右键

  • java使用Base64实现文件加密解密

    本文实例为大家分享了Java实现Base64给文件加密.解密的具体代码,供大家参考,具体内容如下 package test.base64; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import sun.misc.BASE64Decoder;

  • java使用异或对文件进行加密解密

    本文实例为大家分享了java使用异或对文件进行加密解密的具体代码,供大家参考,具体内容如下 1.使用异或的方式加密文件的原理 一个数异或另一个数两次,结果一定是其本身 2.使用异或的原理加密文件 /** * 将文件内容加密 * 使用异或的方式将a.txt加密复制出一个b.txt,放到同一个文件夹下 */ @Test public void encryptFile(){ FileInputStream in = null; FileOutputStream out = null; try { St

  • Java上传下载文件并实现加密解密

    使用 Jersey 服务器实现上传,使用 HTTP 请求实现下载 引入依赖 在 pom.xml 中添加 Jersey 相关依赖 <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version>1.18.1</version> </dependency> 创建工具类 import com.

  • plsql实现DES对称加密 Java解密

    背景 某项目接口采用plsql开发,接口返回用户密码,但要求密码不能是明文返回,因为程序内部需要用到明文密码,所以只能在plsql中对密码进行对称加密,在程序内部进行解密,程序采用java开发. 实现 dbms_crypto是oracle自带的加密包,包含多种加密解密方法,非dba用户需要授权才能进行使用 grant execute on dbms_crypto to xxx;   下面是一个通过DES算法加密的function function encrypt_password(p_passw

  • java实现微信小程序加密数据解密算法

    一.概述 微信推出了小程序,很多公司的客户端应用不仅具有了APP.H5.还接入了小程序开发.但是,小程序中竟然没有提供Java版本的加密数据解密算法.这着实让广大的Java开发人员蛋疼. 微信小程序提供的加密数据解密算法链接 我们下载的算法示例如下: 木有Java!! 木有Java!! 木有Java!! 那么如何解决这个问题,我们一起来实现Java版本的微信小程序加密数据解密算法. 二.实现Java版本的微信小程序加密数据解密算法 1.创建项目 这里,我们创建一个Maven工程,具体创建步骤略.

  • Java实现md5和base64加密解密的示例代码

    import java.io.IOException; import java.security.MessageDigest; import sun.misc.BASE64Encoder; import sun.misc.BASE64Decoder; public class MD5Util { /** * MD5加密 */ public static String md5Encryption(String str) { MessageDigest md5 = null; try { md5 =

  • java使用RSA加密方式实现数据加密解密的代码

    RSA的应用 RSA是一种非对称加密算法.现在,很多登陆表单的密码的都采用RSA加密,例如京东中的登陆使用公钥对密码进行加密 java使用RSA加密方式实现数据加密解密,需要首先产生私钥和公钥 测试代码 public static void main(String args[]) { try { RSADemo rsa=new RSADemo(); rsa.generateKey(); byte[] data=rsa.encrypt("luanpeng".getBytes()); by

  • java 实现DES 加密解密的示例

    package com.cn.peitest; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; /** * @功能说明: <BR> * @创建日期:2016年9月21日<BR> *

  • java使用RSA与AES加密解密的实例代码详解

    首先了解下,什么是堆成加密,什么是非对称加密? 对称加密:加密与解密的密钥是相同的,加解密速度很快,比如AES 非对称加密:加密与解密的秘钥是不同的,速度较慢,比如RSA •先看代码(先会用在研究) 相关依赖: <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.58</versio

  • Java AES加密和解密教程

    在本教程中,我们将看到如何使用JDK中的Java密码体系结构(JCA)来实现AES加密和解密.对称密钥块密码在数据加密中起重要作用.这意味着同一密钥可用于加密和解密.高级加密标准(AES)是一种广泛使用的对称密钥加密算法. AES算法是一种迭代的对称密钥块密码,它支持128.192和256位的加密密钥(秘密密钥),以对128位的块中的数据进行加密和解密. 在AES中生成密钥的方法有两种:从随机数生成或从给定密码生成. 在第一种方法中,应该从像SecureRandom类这样的加密安全(伪)随机数生

  • Java AES256加密解密示例代码

    Java支持许多安全的加密算法,但是其中一些功能较弱,无法在安全性要求很高的应用程序中使用.例如,数据加密标准(DES)加密算法被认为是高度不安全的.今天介绍一下AES 256加密解密. 什么是 AES 256? 高级加密标准 (英语:Advanced Encryption Standard,缩写:AES ),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用. AES是一种对称加密算法.它旨在易于在硬件和软

随机推荐