千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆

java对称加密有哪些

匿名提问者 2023-09-20 14:26:26

java对称加密有哪些

我要提问

推荐答案

  在Java中,对称加密算法有许多选择,其中最常用的包括DES、AES和DESede。下面我会详细介绍每个算法的操作方法。

Java教程

  1.DES(Data Encryption Standard):DES是一种基于56位密钥长度的对称加密算法。下面是使用Java进行DES加密和解密的示例代码:

  import javax.crypto.Cipher;

  import javax.crypto.SecretKey;

  import javax.crypto.SecretKeyFactory;

  import javax.crypto.spec.DESKeySpec;

  import java.nio.charset.StandardCharsets;

  import java.security.Key;

  import java.util.Base64;

  public class DESEncryptionExample {

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

  // 生成DES密钥

  String keyString = "your_key";

  byte[] keyData = keyString.getBytes(StandardCharsets.UTF_8);

  DESKeySpec desKeySpec = new DESKeySpec(keyData);

  SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

  SecretKey desKey = keyFactory.generateSecret(desKeySpec);

  // 创建DES加密对象

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

  // 初始化加密模式

  cipher.init(Cipher.ENCRYPT_MODE, desKey);

  // 加密数据

  String plaintext = "Hello, World!";

  byte[] encryptedData = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8));

  // 对加密数据进行Base64编码

  String encryptedText = Base64.getEncoder().encodeToString(encryptedData);

  System.out.println("Encrypted Text: " + encryptedText);

  // 初始化解密模式

  cipher.init(Cipher.DECRYPT_MODE, desKey);

  // 解密数据

  byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedText));

  // 输出解密结果

  String decryptedText = new String(decryptedData, StandardCharsets.UTF_8);

  System.out.println("Decrypted Text: " + decryptedText);

  }

  }

 

  2.AES(Advanced Encryption Standard):AES是一种高级加密标准,支持128位、192位和256位密钥长度。下面是使用Java进行AES加密和解密的示例代码:

  import javax.crypto.Cipher;

  import javax.crypto.SecretKey;

  import javax.crypto.SecretKeyFactory;

  import javax.crypto.spec.SecretKeySpec;

  import java.nio.charset.StandardCharsets;

  import java.security.Key;

  import java.util.Base64;

  public class AESEncryptionExample {

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

  // 生成AES密钥

  String keyString = "your_key";

  byte[] keyData = keyString.getBytes(StandardCharsets.UTF_8);

  SecretKeySpec aesKeySpec = new SecretKeySpec(keyData, "AES");

  // 创建AES加密对象

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

  // 初始化加密模式

  cipher.init(Cipher.ENCRYPT_MODE, aesKeySpec);

  // 加密数据

  String plaintext = "Hello, World!";

  byte[] encryptedData = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8));

  // 对加密数据进行Base64编码

  String encryptedText = Base64.getEncoder().encodeToString(encryptedData);

  System.out.println("Encrypted Text: " + encryptedText);

  // 初始化解密模式

  cipher.init(Cipher.DECRYPT_MODE, aesKeySpec);

  // 解密数据

  byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedText));

  // 输出解密结果

  String decryptedText = new String(decryptedData, StandardCharsets.UTF_8);

  System.out.println("Decrypted Text: " + decryptedText);

  }

  }

 

  3.DESede(Triple DES):DESede是对称加密算法的一种,使用3个不同的密钥对数据进行加密。下面是使用Java进行DESede加密和解密的示例代码:

  import javax.crypto.Cipher;

  import javax.crypto.SecretKey;

  import javax.crypto.SecretKeyFactory;

  import javax.crypto.spec.DESedeKeySpec;

  import java.nio.charset.StandardCharsets;

  import java.security.Key;

  import java.util.Base64;

  public class DESedeEncryptionExample {

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

  // 生成DESede密钥

  String keyString = "your_key";

  byte[] keyData = keyString.getBytes(StandardCharsets.UTF_8);

  DESedeKeySpec desedeKeySpec = new DESedeKeySpec(keyData);

  SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");

  SecretKey desedeKey = keyFactory.generateSecret(desedeKeySpec);

  // 创建DESede加密对象

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

  // 初始化加密模式

  cipher.init(Cipher.ENCRYPT_MODE, desedeKey);

  // 加密数据

  String plaintext = "Hello, World!";

  byte[] encryptedData = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8));

  // 对加密数据进行Base64编码

  String encryptedText = Base64.getEncoder().encodeToString(encryptedData);

  System.out.println("Encrypted Text: " + encryptedText);

  // 初始化解密模式

  cipher.init(Cipher.DECRYPT_MODE, desedeKey);

  // 解密数据

  byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedText));

  // 输出解密结果

  String decryptedText = new String(decryptedData, StandardCharsets.UTF_8);

  System.out.println("Decrypted Text: " + decryptedText);

  }

  }

 

  以上是使用Java进行对称加密的示例代码。为了确保数据的安全性,请谨慎保管密钥,并采用适当的密钥管理策略。

猜你喜欢LIKE

java动态参数列表的操作方法

2023-09-20

map排序java的实现方法

2023-09-20

Linux安装命令自动补全工具详细

2023-09-20

最新文章NEW

java输出print和println

2023-09-20

linux设置环境变量值的方法

2023-09-20

jQuery获取元素高度的方法及应用

2023-09-20