文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java怎么实现对称加密DES和AES

2023-07-05 22:35

关注

本文小编为大家详细介绍“Java怎么实现对称加密DES和AES”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java怎么实现对称加密DES和AES”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

实验内容和要求

采用Java实现采用对称密码算法的应用软件,所用算法包括DES算法和AES算法。要求该软件具有图形用户界面,能生成密钥,以及对字符串和文件进行加解密

参考代码

// 文件名: test01.javaimport javax.crypto.*;import javax.crypto.spec.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.nio.charset.StandardCharsets;public class test01 extends JFrame implements ActionListener {    private JFileChooser fileChooser = new JFileChooser();    private JTextArea inputArea = new JTextArea(10, 40);    private JTextArea outputArea = new JTextArea(10, 40);    private JButton encryptButton = new JButton("加密");    private JButton decryptButton = new JButton("解密");    private JButton fileButton = new JButton("选择文件");    private JComboBox<String> algorithmBox = new JComboBox<String>(new String[] {"DES", "AES"});    private JLabel keyLabel = new JLabel("密钥:");    private JTextField keyField = new JTextField(20);    public test01() {        super("对称加密算法实现");        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        JPanel mainPanel = new JPanel();        mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));        JPanel inputPanel = new JPanel();        inputPanel.add(new JLabel("输入:"));        inputPanel.add(new JScrollPane(inputArea));        JPanel outputPanel = new JPanel();        outputPanel.add(new JLabel("输出:"));        outputPanel.add(new JScrollPane(outputArea));        JPanel buttonPanel = new JPanel();        buttonPanel.add(encryptButton);        buttonPanel.add(decryptButton);        buttonPanel.add(fileButton);        buttonPanel.add(algorithmBox);        buttonPanel.add(keyLabel);        buttonPanel.add(keyField);        mainPanel.add(inputPanel);        mainPanel.add(outputPanel);        mainPanel.add(buttonPanel);        encryptButton.addActionListener(this);        decryptButton.addActionListener(this);        fileButton.addActionListener(this);        setContentPane(mainPanel);        pack();        setVisible(true);    }    public void actionPerformed(ActionEvent e) {        if (e.getSource() == encryptButton) {            encrypt();        } else if (e.getSource() == decryptButton) {            decrypt();        } else if (e.getSource() == fileButton) {            chooseFile();        }    }    private void chooseFile() {        int returnValue = fileChooser.showOpenDialog(this);        if (returnValue == JFileChooser.APPROVE_OPTION) {            File file = fileChooser.getSelectedFile();            try {                BufferedReader reader = new BufferedReader(new FileReader(file));                inputArea.setText("");                String line = reader.readLine();                while (line != null) {                    inputArea.append(line);                    line = reader.readLine();                    if (line != null) {                        inputArea.append("\n");                    }                }                reader.close();            } catch (IOException e) {                JOptionPane.showMessageDialog(this, "Error reading file: " + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);            }        }    }    private void encrypt() {        try {            String algorithm = (String) algorithmBox.getSelectedItem();            String keyString = keyField.getText();            byte[] keyBytes = keyString.getBytes(StandardCharsets.UTF_8);            SecretKey key;            if (algorithm.equals("DES")) {                key = new SecretKeySpec(keyBytes, "DES");            } else {                key = new SecretKeySpec(keyBytes, "AES");            }            Cipher cipher = Cipher.getInstance(algorithm);            cipher.init(Cipher.ENCRYPT_MODE, key);            String input = inputArea.getText();            byte[] inputBytes = input.getBytes(StandardCharsets.UTF_8);            byte[] outputBytes = cipher.doFinal(inputBytes);            String output = new String(outputBytes, StandardCharsets.UTF_8);            outputArea.setText(output);        } catch (Exception e) {            JOptionPane.showMessageDialog(this, "Error encrypting: "                    + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);        }    }    private void decrypt() {        try {            String algorithm = (String) algorithmBox.getSelectedItem();            String keyString = keyField.getText();            byte[] keyBytes = keyString.getBytes();            SecretKey key;            if (algorithm.equals("DES")) {                key = new SecretKeySpec(keyBytes, "DES");            } else {                key = new SecretKeySpec(keyBytes, "AES");            }            Cipher cipher = Cipher.getInstance(algorithm);            cipher.init(Cipher.DECRYPT_MODE, key);            String input = inputArea.getText();            byte[] inputBytes = input.getBytes();            byte[] outputBytes = cipher.doFinal(inputBytes);            String output = new String(outputBytes);            outputArea.setText(output);        } catch (Exception e) {            JOptionPane.showMessageDialog(this, "Error decrypting: " +                    e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);        }    }    public static void main(String[] args) {        new test01();    }}

实现效果:

Java怎么实现对称加密DES和AES

读到这里,这篇“Java怎么实现对称加密DES和AES”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯