21xrx.com
2024-11-05 20:42:49 Tuesday
登录
文章检索 我的文章 写文章
Java实现DES加密解密
2023-06-16 13:08:10 深夜i     --     --
Java DES加密解密 javax

在安全通信领域,DES是一种广泛使用的对称加密算法。Java语言提供的加密包javax.crypto中可以方便地实现DES加密解密操作,下面我们来看一下Java中如何实现DES算法。


import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

public class DESUtil {

  public SecretKey generateKey() throws Exception {

    KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");

    keyGenerator.init(56);

    return keyGenerator.generateKey();

  }

  public byte[] encrypt(byte[] data, SecretKey key) throws Exception {

    Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

    cipher.init(Cipher.ENCRYPT_MODE, key);

    return cipher.doFinal(data);

  }

  public byte[] decrypt(byte[] data, SecretKey key) throws Exception {

    Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

    cipher.init(Cipher.DECRYPT_MODE, key);

    return cipher.doFinal(data);

  }

}

上面的代码中,我们通过java的javax.crypto包中提供的工具类,实现了DES加密解密的功能。其中,KeyGenerator类是用于生成加密密钥的类,可以指定算法和密钥长度,这里我们使用了56位密钥长度;Cipher类则提供了加密解密的功能,我们可以通过指定算法和工作模式进行不同类型的加密解密操作。

下面我们来看一个具体例子,对一个字符串进行DES加密解密操作:


public static void main(String[] args) throws Exception {

  String str = "Java实现DES加密解密";

  DESUtil util = new DESUtil();

  SecretKey key = util.generateKey();

  byte[] encryptResult = util.encrypt(str.getBytes(), key);

  byte[] decryptResult = util.decrypt(encryptResult, key);

  System.out.println("原始字符串:" + str);

  System.out.println("加密后的字符串:" + new String(encryptResult));

  System.out.println("解密后的字符串:" + new String(decryptResult));

}

运行程序后,我们可以看到加密后的字符串与原始字符串明显不一致,解密后的字符串与原始字符串一致,说明DES算法可以保证数据的安全性。

.crypto包

  
  

评论区

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