21xrx.com
2025-03-24 05:48:42 Monday
文章检索 我的文章 写文章
我最近在学习Java中的DES加密/解密算法
2023-06-14 07:18:58 深夜i     --     --
Java DES 加密/解密

我最近在学习Java中的DES加密/解密算法。DES是一种对称加密算法,它使用相同的密钥来加密和解密数据。使用DES可确保数据安全性,尤其是在网络通信或者数据存储中。

下面是一个简单的Java代码示例,用于使用DES算法加密字符串:

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
public class DesEncryption {
  private static final String ALGORITHM = "DES/ECB/PKCS5Padding";
  private static final String CHARSET = "UTF-8";
  public static byte[] encrypt(String key, String data) throws Exception {
    // 生成秘钥
    SecureRandom random = new SecureRandom();
    KeyGenerator generator = KeyGenerator.getInstance("DES");
    generator.init(random);
    SecretKey secretKey = generator.generateKey();
    // 加密数据
    byte[] keyBytes = key.getBytes(CHARSET);
    SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "DES");
    Cipher cipher = Cipher.getInstance(ALGORITHM);
    cipher.init(Cipher.ENCRYPT_MODE, secretKey);
    return cipher.doFinal(data.getBytes(CHARSET));
  }
  public static byte[] decrypt(String key, byte[] data) throws Exception {
    // 生成秘钥
    byte[] keyBytes = key.getBytes(CHARSET);
    SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "DES");
    // 解密数据
    Cipher cipher = Cipher.getInstance(ALGORITHM);
    cipher.init(Cipher.DECRYPT_MODE, keySpec);
    return cipher.doFinal(data);
  }
  public static void main(String[] args) throws Exception {
    String key = "mykey";
    String data = "Hello World!!!";
    byte[] encrypted = encrypt(key, data);
    byte[] decrypted = decrypt(key, encrypted);
    System.out.println("原始数据:" + data);
    System.out.println("加密数据:" + new String(encrypted, CHARSET));
    System.out.println("解密数据:" + new String(decrypted, CHARSET));
  }
}

在上面的示例代码中,我使用了Java的加密包(javax.crypto)中的Cipher类来实现DES加密/解密功能。同时我使用了一个随机数生成器(java.security.SecureRandom)和密钥生成器(javax.crypto.KeyGenerator)来生成秘密密钥。我使用了PKCS5Padding填充模式来填充数据块,它能够确保加密数据块大小为8字节的倍数。

标题:使用Java实现DES加密/解密算法

  
  

评论区