117.info
人生若只如初见

java怎么实现des加密解密

Java 中可以使用 javax.crypto 包来实现 DES 加密和解密。

下面是一个例子,展示了如何用 DES 加密和解密字符串:

import javax.crypto.*;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.util.Base64;

public class DESExample {

    public static void main(String[] args) {
        String originalText = "Hello, World!";
        String secretKey = "SecretKey";

        try {
            // 创建一个 DES 密钥
            SecretKey key = generateKey(secretKey);

            // 加密字符串
            String encryptedText = encrypt(originalText, key);
            System.out.println("Encrypted Text: " + encryptedText);

            // 解密字符串
            String decryptedText = decrypt(encryptedText, key);
            System.out.println("Decrypted Text: " + decryptedText);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 生成一个 DES 密钥
    private static SecretKey generateKey(String secretKey) throws NoSuchAlgorithmException, InvalidKeyException, InvalidKeySpecException {
        DESKeySpec desKeySpec = new DESKeySpec(secretKey.getBytes());
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
        return keyFactory.generateSecret(desKeySpec);
    }

    // 使用给定的密钥加密字符串
    private static String encrypt(String text, SecretKey key) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte[] encryptedBytes = cipher.doFinal(text.getBytes());
        return Base64.getEncoder().encodeToString(encryptedBytes);
    }

    // 使用给定的密钥解密字符串
    private static String decrypt(String encryptedText, SecretKey key) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));
        return new String(decryptedBytes);
    }
}

此代码会输出以下结果:

Encrypted Text: 2vqyQ/J1sIc=
Decrypted Text: Hello, World!

请注意,上述代码只是一个示例,并没有处理加密和解密的异常情况。在实际使用中,建议处理可能的异常情况,以保证代码的健壮性。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fef52AzsLAgFVBVA.html

推荐文章

  • 怎么用java打印等腰三角形

    以下是使用Java打印等腰三角形的代码示例:
    public class Main { public static void main(String[] args) { int rows = 5; for (int i = 1; i

  • 怎么用Java打印九九乘法表

    你可以使用嵌套循环来打印九九乘法表,具体代码如下:
    public class MultiplicationTable { public static void main(String[] args) { int size = 9; for ...

  • java线程获取用户怎么实现

    要在Java中获取用户,可以使用以下方法之一: 使用Scanner类从控制台获取用户输入: import java.util.Scanner; public class Main { public static void main(S...

  • java中properties配置文件怎么用

    在Java中,可以使用java.util.Properties类来读取和操作属性配置文件。下面是一些常见的使用方法: 创建Properties对象并加载配置文件: Properties props = new...

  • ubuntu配置vncserver的步骤是什么

    配置VNC服务器的步骤如下: 安装VNC服务器软件。
    使用以下命令安装TightVNC服务器:
    sudo apt-get update
    sudo apt-get install tightvncserver ...

  • c语言怎么判断一个变量是否变化

    在C语言中,我们可以使用条件语句来判断一个变量是否发生了变化。具体的判断方式取决于变量的数据类型和比较的条件。 对于基本数据类型(如int、float等),可以...

  • win10遥测服务怎么关闭

    要关闭Win10遥测服务,可以按照以下步骤操作: 打开“设置”菜单。可以通过在任务栏上点击“开始”按钮,然后点击“设置”图标来打开。 在“设置”窗口中,点击“...

  • windows检查更新半天没反应如何解决

    如果在Windows上检查更新半天没有反应,可以尝试以下解决方法: 重启计算机:有时候重新启动计算机可以解决更新问题。 检查网络连接:确保计算机已连接到互联网,...