Java简单文本加解密程序 要求 1、界面上文本框输入文本,或者选择文本文件打开; 2、实现两种以上简单文本加密方法,下拉框选择; 3、点击“加密”按钮,对文本进行加密。如果是文本框输入文本,加密后的文本显示在加密后文本框里;如果是文本文件,加密后文本保存设定好的加密数据文件中; 4、点击“解密”按钮,对加密文本(来源:文本框或文本文件)进行解密; 5、系统具有良好的可扩展性,以便后期可以增加更多的加密方法。

时间: 2024-02-20 19:57:42 浏览: 19
以下是一个Java简单文本加解密程序的实现示例: ```java import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.border.EmptyBorder; import javax.swing.filechooser.FileNameExtensionFilter; public class TextEncryptor extends JFrame { private JPanel contentPane; private JTextArea textAreaPlain; private JTextArea textAreaCipher; private JComboBox<String> comboBoxMethod; private JButton btnEncrypt; private JButton btnDecrypt; private File file; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { TextEncryptor frame = new TextEncryptor(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } public TextEncryptor() { setTitle("Text Encryptor"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 400); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); JScrollPane scrollPanePlain = new JScrollPane(); contentPane.add(scrollPanePlain, BorderLayout.WEST); textAreaPlain = new JTextArea(); scrollPanePlain.setViewportView(textAreaPlain); JScrollPane scrollPaneCipher = new JScrollPane(); contentPane.add(scrollPaneCipher, BorderLayout.EAST); textAreaCipher = new JTextArea(); textAreaCipher.setEditable(false); scrollPaneCipher.setViewportView(textAreaCipher); JPanel panelSouth = new JPanel(); contentPane.add(panelSouth, BorderLayout.SOUTH); comboBoxMethod = new JComboBox<String>(); comboBoxMethod.addItem("Caesar Cipher"); // add more encryption methods here panelSouth.add(comboBoxMethod); btnEncrypt = new JButton("Encrypt"); btnEncrypt.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String plainText = textAreaPlain.getText(); String cipherText = ""; String method = (String) comboBoxMethod.getSelectedItem(); if (method.equals("Caesar Cipher")) { cipherText = caesarCipherEncrypt(plainText); } // add more encryption methods here textAreaCipher.setText(cipherText); if (file != null) { saveToFile(cipherText, file.getAbsolutePath() + ".enc"); } } }); panelSouth.add(btnEncrypt); btnDecrypt = new JButton("Decrypt"); btnDecrypt.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String cipherText = textAreaCipher.getText(); String plainText = ""; String method = (String) comboBoxMethod.getSelectedItem(); if (method.equals("Caesar Cipher")) { plainText = caesarCipherDecrypt(cipherText); } // add more decryption methods here textAreaPlain.setText(plainText); if (file != null) { saveToFile(plainText, file.getAbsolutePath().replaceAll(".enc$", "")); } } }); panelSouth.add(btnDecrypt); JButton btnOpen = new JButton("Open"); btnOpen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFileChooser fileChooser = new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensionFilter("Text files", "txt"); fileChooser.setFileFilter(filter); int result = fileChooser.showOpenDialog(TextEncryptor.this); if (result == JFileChooser.APPROVE_OPTION) { file = fileChooser.getSelectedFile(); try { BufferedReader reader = new BufferedReader(new FileReader(file)); StringBuilder builder = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { builder.append(line + "\n"); } textAreaPlain.setText(builder.toString()); reader.close(); } catch (IOException ex) { ex.printStackTrace(); } } } }); panelSouth.add(btnOpen); JButton btnSave = new JButton("Save"); btnSave.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFileChooser fileChooser = new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensionFilter("Text files", "txt"); fileChooser.setFileFilter(filter); int result = fileChooser.showSaveDialog(TextEncryptor.this); if (result == JFileChooser.APPROVE_OPTION) { file = fileChooser.getSelectedFile(); saveToFile(textAreaCipher.getText(), file.getAbsolutePath()); } } }); panelSouth.add(btnSave); } private String caesarCipherEncrypt(String plainText) { int shift = 3; // shift value for Caesar Cipher StringBuilder builder = new StringBuilder(); for (int i = 0; i < plainText.length(); i++) { char c = plainText.charAt(i); if (Character.isLetter(c)) { c = (char) ((c - 'a' + shift) % 26 + 'a'); } builder.append(c); } return builder.toString(); } private String caesarCipherDecrypt(String cipherText) { int shift = 3; // shift value for Caesar Cipher StringBuilder builder = new StringBuilder(); for (int i = 0; i < cipherText.length(); i++) { char c = cipherText.charAt(i); if (Character.isLetter(c)) { c = (char) ((c - 'a' - shift + 26) % 26 + 'a'); } builder.append(c); } return builder.toString(); } private void saveToFile(String text, String fileName) { try { BufferedWriter writer = new BufferedWriter(new FileWriter(fileName)); writer.write(text); writer.close(); } catch (IOException ex) { ex.printStackTrace(); } } } ``` 该程序使用Java Swing库构建GUI界面,并实现了Caesar密码加解密算法。用户可以输入文本或选择文本文件,并选择加密算法进行加密和解密操作。加密后的文本可以保存到文件中。该程序还具有可扩展性,可以添加更多的加密算法。

相关推荐

最新推荐

recommend-type

JavaScript如何实现在文本框(密码框)输入提示语

为了更好的达到用户体验度,我们在登录表单时会有一些提示语言,比如说:“请输入用户名”和“请输入密码”等语言,下面小编通过本篇文章给大家分享JavaScript如何实现在密码框中出现提示语,对js密码框提示语相关...
recommend-type

js限制文本框输入长度两种限制方式(长度、字节数)

在实际应用中根据需要会用到文本框限制字符长度,以些新手朋友有们可能还不清楚如何应付,本人搜集整理了一些常用技巧,晒出来和大家分享一下,希望可以帮助你们
recommend-type

Java编程获取文本框的内容实例解析

主要介绍了Java编程获取文本框的值实例解析,将输入的值保存在一个指定的 txt文件之中,具有一定的参考价值,需要的朋友可以了解。
recommend-type

layui当点击文本框时弹出选择框,显示选择内容的例子

今天小编就为大家分享一篇layui当点击文本框时弹出选择框,显示选择内容的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

JAVA文本框、文本区和布局的设计

应用面向对象程序设计课程中的“封装和继承”的基本原理,本课程中“类、对象和接口”的基本概念、以及“Java的事件处理机制”、“图形用户界面设计”技术,当在文本区中输入若干数时,下面的文本框同时对输入的数...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。