【java课设+源代码+注释+文档】文件加密

项目文档见我上传的资源

点击这里下载资源

package xyz.slienceme;
/*
 * To change this license header, choose License Headers in Project Properties.

 * To change this template file, choose Tools | Templates
 * and open the template in the editor.

 */

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

/**
 * @Author slience_me
 * @Time : 2021/5/5  19:36
 * @File : Encrypt.java
 * @Software : IntelliJ IDEA
 */
public class Encrypt extends javax.swing.JFrame {

    /**
     * Creates new form Encrypt
     */
    public Encrypt() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.

     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.

     */
    @SuppressWarnings("unchecked")
    // //GEN-BEGIN:initComponents
    private void initComponents() {

        savePathTxt = new javax.swing.JTextField();
        savePathBtn = new javax.swing.JButton();
        filePathBtn = new javax.swing.JButton();
        SimEncryBtn = new javax.swing.JButton();
        ComDecryBtn = new javax.swing.JButton();
        SimDecryBtn = new javax.swing.JButton();
        ComEncryBtn = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        filePathTxt = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        savePathTxt.setToolTipText("");
        savePathTxt.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                savePathTxtActionPerformed(evt);
            }
        });

        savePathBtn.setText("保存路径:");
        savePathBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                savePathBtnActionPerformed(evt);
            }
        });

        filePathBtn.setText("文件路径:");
        filePathBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                filePathBtnActionPerformed(evt);
            }
        });

        SimEncryBtn.setText("简单加密");
        SimEncryBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                SimEncryBtnActionPerformed(evt);
            }
        });

        ComDecryBtn.setText("复杂解密");
        ComDecryBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ComDecryBtnActionPerformed(evt);
            }
        });

        SimDecryBtn.setText("简单解密");
        SimDecryBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                SimDecryBtnActionPerformed(evt);
            }
        });

        ComEncryBtn.setText("复杂加密");
        ComEncryBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ComEncryBtnActionPerformed(evt);
            }
        });

        jLabel1.setFont(new java.awt.Font("微软雅黑", 1, 18)); // NOI18N
        jLabel1.setText("文件加密小助手");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(54, 54, 54)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(filePathBtn)
                            .addComponent(savePathBtn))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(filePathTxt, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(savePathTxt, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 337, Short.MAX_VALUE)))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(209, 209, 209)
                        .addComponent(jLabel1))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(75, 75, 75)
                        .addComponent(SimEncryBtn)
                        .addGap(27, 27, 27)
                        .addComponent(SimDecryBtn)
                        .addGap(18, 18, 18)
                        .addComponent(ComEncryBtn)
                        .addGap(18, 18, 18)
                        .addComponent(ComDecryBtn)))
                .addContainerGap(57, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(22, 22, 22)
                .addComponent(jLabel1)
                .addGap(39, 39, 39)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(savePathTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(savePathBtn))
                .addGap(33, 33, 33)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(filePathBtn)
                    .addComponent(filePathTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(40, 40, 40)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(SimEncryBtn)
                    .addComponent(SimDecryBtn)
                    .addComponent(ComEncryBtn)
                    .addComponent(ComDecryBtn))
                .addContainerGap(89, Short.MAX_VALUE))
        );

        pack();
    }// //GEN-END:initComponents

    private void savePathTxtActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_savePathTxtActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_savePathTxtActionPerformed

    private void filePathBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_filePathBtnActionPerformed
        // TODO add your handling code here:
        // TODO add your handling code here:
        JFileChooser jfc = new JFileChooser();// 文件选择器
        // 设定只能选择到文件夹
        jfc.setFileSelectionMode(0);
        // 此句是打开文件选择器界面的触发语句
        jfc.setCurrentDirectory(new File("D://1Amycode//Java//CourseDesign"));
        int state = jfc.showOpenDialog(null);// 此句是打开文件选择器界面的触发语句
            if (state == 1) {
                return;// 撤销则返回
            } else {
                File f = jfc.getSelectedFile();//
                filePathTxt.setText(f.getAbsolutePath());
            }
    }//GEN-LAST:event_filePathBtnActionPerformed

    private void SimEncryBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SimEncryBtnActionPerformed
        // TODO add your handling code here:

            String newpath = savePathTxt.getText().trim();
            System.out.println("SimEncryBtnActionPerformed=" + newpath);
            String oldpath = filePathTxt.getText().trim();
            System.out.println("SimEncryBtnActionPerformed=" + oldpath);

            if (newpath.equals("")) {
                JOptionPane.showMessageDialog(null, "请选择输出路径!", "提示", 2);
            } else if (filePathTxt.getText().equals("")) {
                JOptionPane.showMessageDialog(null, "请选择文件!", "提示", 2);
            } else {
                File file = new File(oldpath);
                //文件类型
                String filetype=file.getName().substring(file.getName().lastIndexOf("."),file.getName().length());
                System.out.println("filetype=" + filetype);
                //文件前缀
                String fileprefix=file.getName().substring(0,file.getName().lastIndexOf("."));
                System.out.println("fileprefix=" + fileprefix);
                String newFilepath = newpath + "\\"+ "SimEncrypt" + fileprefix + filetype;
                System.out.println("newFilepath=" + newFilepath);
                if (!file.exists()) {
                    try {
                        file.createNewFile();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        JOptionPane.showMessageDialog(null, "路径不正确!", "提示", 2);
                    }
                }
//                creatPath(newpath);//检查路径是否存在,不存在创建新路径
                try {
                    SimEncryption(oldpath, newFilepath);
                } catch (IOException ex) {
                    Logger.getLogger(Encrypt.class.getName()).log(Level.SEVERE, null, ex);
                }

                JOptionPane.showMessageDialog(null, "简单加密完成!", "提示", 2);
            }
    }//GEN-LAST:event_SimEncryBtnActionPerformed

    private void savePathBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_savePathBtnActionPerformed
        // TODO add your handling code here:
        JFileChooser jfc = new JFileChooser();// 文件选择器
        // 设定只能选择到文件夹
        jfc.setFileSelectionMode(1);
        // 此句是打开文件选择器界面的触发语句
        jfc.setCurrentDirectory(new File("D://1Amycode//Java//CourseDesign"));
        int state = jfc.showOpenDialog(null);
            if (state == 1) {
                return;
            } else {
                File f = jfc.getSelectedFile();// f为选择到的目录
                savePathTxt.setText(f.getAbsolutePath());
            }
    }//GEN-LAST:event_savePathBtnActionPerformed

    private void ComDecryBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ComDecryBtnActionPerformed

            String newpath = savePathTxt.getText().trim();
            System.out.println("ComEncryBtnActionPerformed=" + newpath);
            String oldpath = filePathTxt.getText().trim();
            System.out.println("ComEncryBtnActionPerformed=" + oldpath);

            if (newpath.equals("")) {
                JOptionPane.showMessageDialog(null, "请选择输出路径!", "提示", 2);
            } else if (filePathTxt.getText().equals("")) {
                JOptionPane.showMessageDialog(null, "请选择文件!", "提示", 2);
            } else {
                File file = new File(oldpath);
                //文件类型
                String filetype=file.getName().substring(file.getName().lastIndexOf("."),file.getName().length());
                System.out.println("filetype=" + filetype);
                //文件前缀
                String fileprefix=file.getName().substring(0,file.getName().lastIndexOf("."));
                System.out.println("fileprefix=" + fileprefix);
                String newFilepath = newpath + "\\"+ "ComDe_" + fileprefix + filetype;
                System.out.println("newFilepath=" + newFilepath);
                if (!file.exists()) {
                    try {
                        file.createNewFile();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        JOptionPane.showMessageDialog(null, "路径不正确!", "提示", 2);
                    }
                }
//                creatPath(newpath);//检查路径是否存在,不存在创建新路径
                try {
                    ComDecryption(oldpath, newFilepath);
                } catch (IOException ex) {
                    Logger.getLogger(Encrypt.class.getName()).log(Level.SEVERE, null, ex);
                }

                JOptionPane.showMessageDialog(null, "复杂解密完成!", "提示", 2);
            }
    }//GEN-LAST:event_ComDecryBtnActionPerformed

    private void SimDecryBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SimDecryBtnActionPerformed
        // TODO add your handling code here:
        // 存储的位置
        String newpath = savePathTxt.getText().trim();
        System.out.println("SimEncryBtnActionPerformed=" + newpath);
        // 加密的文件
        String oldpath = filePathTxt.getText().trim();
        System.out.println("SimEncryBtnActionPerformed=" + oldpath);

        if (newpath.equals("")) {
                JOptionPane.showMessageDialog(null, "请选择输出路径!", "提示", 2);
            } else if (filePathTxt.getText().equals("")) {
                JOptionPane.showMessageDialog(null, "请选择文件!", "提示", 2);
            } else {
                File file = new File(oldpath);
                //文件类型
                String filetype=file.getName().substring(file.getName().lastIndexOf("."),file.getName().length());
                System.out.println("filetype=" + filetype);
                //文件前缀
                String fileprefix=file.getName().substring(0,file.getName().lastIndexOf("."));
                System.out.println("fileprefix=" + fileprefix);
                String newFilepath = newpath + "\\"+ "SimDe_" + fileprefix+ filetype;
                System.out.println("newFilepath=" + newFilepath);
                if (!file.exists()) {
                    try {
                        file.createNewFile();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        JOptionPane.showMessageDialog(null, "路径不正确!", "提示", 2);
                    }
                }
                creatPath(newpath);//检查路径是否存在,不存在创建新路径
                try {
                    SimDecryption(oldpath, newFilepath);
                } catch (IOException ex) {
                    Logger.getLogger(Encrypt.class.getName()).log(Level.SEVERE, null, ex);
                }
            JOptionPane.showMessageDialog(null, "简单解密完成!", "提示", 2);
        }
    }//GEN-LAST:event_SimDecryBtnActionPerformed

    private void ComEncryBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ComEncryBtnActionPerformed

        // 存储的位置
        String newpath = savePathTxt.getText().trim();
        System.out.println("ComEncryBtnActionPerformed=" + newpath);
        // 加密的文件
        String oldpath = filePathTxt.getText().trim();
        System.out.println("ComEncryBtnActionPerformed=" + oldpath);

        if (newpath.equals("")) {
                JOptionPane.showMessageDialog(null, "请选择输出路径!", "提示", 2);
            } else if (filePathTxt.getText().equals("")) {
                JOptionPane.showMessageDialog(null, "请选择文件!", "提示", 2);
            } else {
                File file = new File(oldpath);
                //文件类型
                String filetype=file.getName().substring(file.getName().lastIndexOf("."),file.getName().length());
//                System.out.println("filetype=" + filetype);
                //文件前缀
                String fileprefix=file.getName().substring(0,file.getName().lastIndexOf("."));
//                System.out.println("fileprefix=" + fileprefix);
                String newFilepath = newpath + "\\"+ "ComEncrypt" + fileprefix + filetype;
//                System.out.println("newFilepath=" + newFilepath);
                if (!file.exists()) {
                    try {
                        file.createNewFile();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        JOptionPane.showMessageDialog(null, "路径不正确!", "提示", 2);
                    }
                }
                creatPath(newpath);//检查路径是否存在,不存在创建新路径
                try {
                    ComEncryption(oldpath, newFilepath);
                } catch (IOException ex) {
                    Logger.getLogger(Encrypt.class.getName()).log(Level.SEVERE, null, ex);
                }
            JOptionPane.showMessageDialog(null, "复杂加密完成!", "提示", 2);
        }
    }//GEN-LAST:event_ComEncryBtnActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Encrypt.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Encrypt.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Encrypt.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Encrypt.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Encrypt().setVisible(true);
            }
        });
    }

    //根据路径处理,如果不存在创建路径
    public void creatPath(String oldpath) {
        String temppath = oldpath.replace(oldpath.substring(oldpath.lastIndexOf("\\"), oldpath.length()), "");
        File file = new File(temppath);
        if (!file.exists()) {
            file.mkdir();
            System.out.println("路径不存在,但是已经成功创建了" + temppath);
        }
    }

    public void SimEncryption(String oldpath, String newpath) throws IOException {
        // 文件路径
        File file = new File(oldpath);
        // 输入流
        FileInputStream inputFile = new FileInputStream(file);
        // 输出流
        FileWriter fw = new FileWriter(newpath);
        byte[] buffer = new byte[(int) file.length()];
        // read(byte[] b)方法:从此输入流中将最多b.length个字节的数据读入一个字节数组中
        inputFile.read(buffer);
        inputFile.close();
        for (int i = 0; i < buffer.length; i++) {
//            System.out.println(buffer[i]);
            buffer[i] += 3;
            fw.write(buffer[i]);
        }
        fw.close();
    }

    public void SimDecryption(String oldpath, String newpath) throws IOException {
        // 文件路径
        File file = new File(oldpath);
        // 输入流
        FileInputStream inputFile = new FileInputStream(file);
        // 输出流
        FileWriter fw = new FileWriter(newpath);
        byte[] buffer = new byte[(int) file.length()];
        // read(byte[] b)方法:从此输入流中将最多b.length个字节的数据读入一个字节数组中
        inputFile.read(buffer);
        inputFile.close();
        for (int i = 0; i < buffer.length; i++) {
//            System.out.println(buffer[i]);
            buffer[i] -= 3;
            fw.write(buffer[i]);
        }
        fw.close();
    }

    public void ComEncryption(String oldpath, String newpath) throws IOException {
        // 文件路径
        File file = new File(oldpath);
        // 输入流
        FileInputStream inputFile = new FileInputStream(file);
        // 输出流
        FileWriter fw = new FileWriter(newpath);
        byte[] buffer = new byte[(int) file.length()];
        // read(byte[] b)方法:从此输入流中将最多b.length个字节的数据读入一个字节数组中
        inputFile.read(buffer);
        inputFile.close();
        String string = new String(buffer);
        String result = "";
        System.out.println("string="+ string.toString());

        for (int i = 0; i < string.length(); i++) {
            char x = string.toString().charAt(i);
            if(x >= 'a' && x = 'n' && x = 'A' && x = 'N' && x ='0' && x='6' && x

Original: https://www.cnblogs.com/Slience-me/p/16341903.html
Author: Slience_me
Title: 【java课设+源代码+注释+文档】文件加密

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585855/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 页面国际化

    页面国际化 有的时候,我们的网站会去涉及中英文甚至多语言的切换,这时候我们就需要对页面进行国际化设计了。 6.1 准备工作 在IDEA中统一设置properties的编码格式 6….

    Linux 2023年6月14日
    0118
  • Markdown基本使用

    元素 Markdown 语法 [标题(Heading)] [粗体(Bold)] [斜体(Italic)] [引用块(Blockquote)] [有序列表(Ordered List)…

    Linux 2023年6月13日
    097
  • 【小记】pip 如何下载 whl 环境到无外网机器

    你的测试机肯定是有外网,脚本肯定也能在测试机跑通。 先导出 whl 包列表到txt: 然后执行下载到当前目录: 将 whl 拷贝到内网服务器安装即可。(Win和Linux编译不互通…

    Linux 2023年6月13日
    0111
  • 使用Amazon Pinpoint对用户行为追踪

    1.前言 最近在做一个项目,我们的后台大数据团队需要了解用户在使用app的时候,都进行了哪些操作,在哪个页面都干了些什么,以及app日活和月活等等,各种数据。总之就是监控用户行为,…

    Linux 2023年6月13日
    0112
  • CentOS7 源码安装Nginx及Nginx基本管理设置

    CentOS7 安装 参考文档 CentOS7最小安装后初始化安装工具 1:yum install net-tools 参考文档 2:源码安装wget 参考文档 或者执行 yum …

    Linux 2023年5月27日
    0129
  • How to Operate SharePoint User Alerts with PowerShell

    When you migrate list or site, the user alerts in the site will not be migrated together w…

    Linux 2023年5月28日
    0151
  • 面试题:Java序列化与反序列化

    序列化和反序列化的概念 应用场景? 序列化实现的方式 继承Serializable接口,普通序列化 继承Externalizable接口,强制自定义序列化 serialVersio…

    Linux 2023年6月6日
    0133
  • jQuery 遍历

    下图展示了一个家族树。通过 jQuery 遍历,您能够从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行…

    Linux 2023年6月13日
    096
  • Linux 服务器安全(基本)

    Original: https://www.cnblogs.com/libin-linux/p/16656644.htmlAuthor: LB_运维技术Title: Linux 服…

    Linux 2023年6月13日
    0102
  • 用Windows Terminal替代cmd

    HKEY_CLASSES_ROOT\batfile\shell\open\command,默认项内容 把 "C:\Users\<user>\AppData\L…

    Linux 2023年6月13日
    0117
  • 高通方案的Android设备几种开机模式的进入与退出

    高通方案的Android设备主要有以下几种开机模式,Android、EDL、Fastboot、Recovery和FFBM,其进入及退出的方式如下表。 adb reboot boot…

    Linux 2023年6月7日
    0148
  • vue axios的二次封装

    1、axios的二次封装 BiliBili作者原地址,多多支持 npm i axios //下载axios 首先创建两个文件夹在src目录下;api和config 先在 confi…

    Linux 2023年6月7日
    090
  • conda 和 pip 的具体区别

    pip install 安装包时不会自动安装所需的其他依赖包,只是在缺少其他依赖包时作错误提示,这时需要手动安装其他依赖包 pip 不会将python看成包,不能对环境中的pyth…

    Linux 2023年6月7日
    099
  • 修改内核中的只读区内容

    研究到 apparmor 内核源码,其中涉及到只读变量 __lsm_ro_after_init,研究怎么修改只读区实现部分功能,这里记录一下。 思路上很简单,修改的时候禁用写保护,…

    Linux 2023年6月13日
    086
  • CentOS/Redflag 7.3安装qemu 5.0记录

    安装实际上相当简单,只需下载源代码并编译即可。 [En] Installation is actually quite simple, just download the sour…

    Linux 2023年5月27日
    0119
  • Windows 添加nginx到服务

    一、下载nginx 地址:http://nginx.org/en/download.html (稳定版) 解压到相应的磁盘,本文是:E:\nginx\nginx-1.18.0 二、…

    Linux 2023年6月8日
    0124
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球