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

 更新时间:2021年04月30日 14:45:09   作者:DJC期待  
这篇文章主要介绍了Java可视化之实现文本的加密和解密,文中有非常详细的代码示例,对正在学习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实现文本的加密和解密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文带你掌握SpringBoot中常见定时任务的实现

    一文带你掌握SpringBoot中常见定时任务的实现

    这篇文章主要为大家详细介绍了Spring Boot中定时任务的基本用法、高级特性以及最佳实践,帮助开发人员更好地理解和应用定时任务,提高系统的稳定性和可靠性,需要的可以参考下
    2024-03-03
  • SpringCloud Tencent 全套解决方案源码分析

    SpringCloud Tencent 全套解决方案源码分析

    Spring Cloud Tencent实现Spring Cloud标准微服务SPI,开发者可以基于Spring Cloud Tencent开发Spring Cloud微服务架构应用,Spring Cloud Tencent 的核心依托腾讯开源的一站式服务发现与治理平台 Polarismesh,实现各种分布式微服务场景,感兴趣的朋友一起看看吧
    2022-07-07
  • Springboot集成OpenFeign Demo详解

    Springboot集成OpenFeign Demo详解

    这篇文章主要为大家详细介绍了Springboot集成OpenFeign Demo以及参数的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-02-02
  • Java项目中防止SQL注入的四种方法推荐

    Java项目中防止SQL注入的四种方法推荐

    sql注入是web开发中最常见的一种安全漏洞,这篇文章为大家整理了四种Java项目中防止SQL注入的方法,有需要的小伙伴可以参考一下
    2025-03-03
  • JAVA8 lambda表达式权威教程

    JAVA8 lambda表达式权威教程

    本文主要给大家讲解Java8中最重要的一个特征之一lambda表达式,本文通过实例图文解说给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习下吧
    2021-05-05
  • Java如何获取Json中的数据实例代码

    Java如何获取Json中的数据实例代码

    这篇文章主要给大家介绍了关于Java如何获取Json中数据的相关资料,我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON获取方式,需要的朋友可以参考下
    2023-09-09
  • Java适配器模式应用之电源适配器功能详解

    Java适配器模式应用之电源适配器功能详解

    这篇文章主要介绍了Java适配器模式应用之电源适配器功能,较为详细的分析了适配器模式的概念、原理及Java基于适配器模式实现电源适配器功能的相关操作技巧与注意事项,需要的朋友可以参考下
    2018-05-05
  • java连接SQL Server数据库的超详细教程

    java连接SQL Server数据库的超详细教程

    最近在java连接SQL数据库时会出现一些问题,所以这篇文章主要给大家介绍了关于java连接SQL Server数据库的超详细教程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • idea中JRebel不生效问题及解决方案

    idea中JRebel不生效问题及解决方案

    这篇文章主要介绍了idea中JRebel不生效问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java程序与C语言的区别浅析

    Java程序与C语言的区别浅析

    Java和C语言虽有相同性,但两者也有一定的不同。Java程序是面向对象的一种简单、分布式 、解释、健壮、安全、结构中立、可移植、高效能、多线程、动态的语言它是面向对象而C语言是面向过程的,这是最大的不同,对于学过C语言的我们来说,Java可以说是比较简单的编程语言
    2017-04-04

最新评论