java怎么实现des加密解密

avatar
作者
猴君
阅读量:0

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! 

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!