21xrx.com
2024-11-22 13:20:51 Friday
登录
文章检索 我的文章 写文章
我最近在学习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加密/解密算法

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复