【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)

大家都在看

  • jmeter并发设置的原理

    简介 广义并发 绝对并发 简介 ​ 性能测试过程中是否需要进行同步定时器的设置,需要根据实际情况来考虑。 ​ 举个栗子来讲是我们的双十一秒杀活动,这时候就必须实现请求数量达到一定数…

    Linux 2023年6月14日
    0151
  • 数据链路层 交换机的工作原理

    以太网 以太网是一种将几台电脑连接起来,能够进行通讯的技术,也就是组建所谓的”局域网”。所以以太网可以说是一种局域网技术但局域网技术并非只有以太网一种,还有…

    Linux 2023年6月6日
    0122
  • UE4游戏上架Steam全流程

    本人使用的是UE4.27.2, Windows 11操作系统。 首先,在ue4项目的插件设置中,勾选Online Subsystem 和 Online Subsystem Stea…

    Linux 2023年6月6日
    0107
  • 方法的深度理解

    权限修饰符 返回值类型 类名(行参列表 )throws 异常的类型{ //方法体 约定俗称:子类中叫重写的方法,父类中叫被重写的方法。 ①子类重写的方法名和行参列表和父类被重写的方…

    Linux 2023年6月14日
    0108
  • ShardingSphere-proxy-5.0.0分布式哈希取模分片实现(四)

    一、说明 主要是对字符串的字段进行hash取模 二、修改配置文件config-sharding.yaml,并重启服务 # Licensed to the Apache Softwa…

    Linux 2023年6月14日
    084
  • Java基础系列–04_数组

    一维数组:(1)数组:存储同一种数据类型的多个元素的容器。(2)特点: 每一个元素都有编号,从0开始,最大编号是数组的长度-1。编号的专业叫法: 索引(3)定义格式A:数据类型[]…

    Linux 2023年6月7日
    099
  • 每天一个 HTTP 状态码 前言

    HTTP 状态码由 3 位阿拉伯数字构成,其中第一位用于定义 HTTP 响应的类型… 前前言 在重新开始写博文(其实大多也就最多算是日常笔记小结)之际,就想着从短小精悍…

    Linux 2023年6月7日
    096
  • 设计模式——–代理模式

    代理模式:为其他对象提供一种代理以控制对这个对象的访问。 最简单的代理模式,分为三种角色: 抽象主题角色:代理类与被代理共同实现的接口,内部定义了最普通的业务类型。 具体主题角色:…

    Linux 2023年6月7日
    083
  • shell xargs技巧

    find /home/tomcat8-hk/ -name ‘808*.sh’ | xargs -i sed ‘s@CATALINA_HOME=&…

    Linux 2023年5月28日
    0110
  • Linux 用户密码正确但无法登录和无法su问题故障

    一、 故障 描述 在应用登入操作系统时,用户密码正确但显示Permission denied无法登录,通过管理口控制台用root用户登录,也是同样情况,通过进入单用户查找问题。 一…

    Linux 2023年6月13日
    096
  • 浅谈缓存击穿、缓存穿透、缓存雪崩、缓存预热、缓存降级

    对于缓存,大家肯定都不陌生,不管是前端还是服务端开发,缓存几乎都是必不可少的优化方式之一。在实际生产环境中,缓存的使用规范也是一直备受重视的,如果使用的不好,很容易就遇到缓存击穿、…

    Linux 2023年6月14日
    0109
  • 高速USB转4串口产品设计-RS485串口

    基于480Mbps 高速USB转8路串口芯片CH344Q,可以为各类主机扩展出4个独立的串口。CH344芯片支持使用操作系统内置的CDC串口驱动,也支持使用厂商提供的VCP串口驱动…

    Linux 2023年6月7日
    0112
  • IaaS、PaaS和SaaS:云计算的三种服务模式 【转】

    云计算是一种新的计算资源使用模式,云端本身还是 IT 系统,所以逻辑上同样可以划分为这四层。底三层可以再划分出很多”小块”并出租出去,这有点像立体停车房,按…

    Linux 2023年6月8日
    0140
  • JuiceFS 缓存预热详解

    缓存预热是一个比较常见的概念,相信很多小伙伴都有所了解。对于 JuiceFS 来说,缓存预热就是将需要操作的数据预先从对象存储拉取到本地,从而获得与使用本地存储类似的性能表现。 缓…

    Linux 2023年6月14日
    091
  • 账号分享

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月8日
    0119
  • 高等代数:3 线性方程组的解集的结构

    3 线性方程组的解集的结构 1、定义1:数域K上所有n元有序数组组成的集合(K^{n}),连同定义在它上面的加法运算和数量乘法运算,以及满足的8条运算法则一起,称为数域K上的一个 …

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