java下DES加密与解密

项目中要用到加密与解密,从网上找了一个修改了一下

  
  
  
  
  1. package com.taiji.fzb.util;  
  2.  
  3. import javax.crypto.*;  
  4. import javax.crypto.spec.DESKeySpec;  
  5.  
  6. import java.security.NoSuchAlgorithmException;  
  7. import java.security.InvalidKeyException;  
  8. import java.security.SecureRandom;  
  9. import java.security.spec.InvalidKeySpecException;  
  10.  
  11. /**  
  12. * 通过DES加密解密实现一个String字符串的加密和解密.  
  13.  
  14. * @author badpeas  
  15.  
  16. */ 
  17. public class EncryptDecryptData {  
  18.  
  19.     public static void main(String[] args) throws NoSuchAlgorithmException,  
  20.             InvalidKeyException, NoSuchPaddingException,  
  21.             InvalidKeySpecException, IllegalBlockSizeException,  
  22.             BadPaddingException {  
  23.         // 1.1 >>> 首先要创建一个密匙  
  24.         // DES算法要求有一个可信任的随机数源  
  25.         SecureRandom sr = new SecureRandom();  
  26.         // 为我们选择的DES算法生成一个KeyGenerator对象  
  27.         KeyGenerator kg = KeyGenerator.getInstance("DES");  
  28.         kg.init(sr);  
  29.         // 生成密匙  
  30.         SecretKey key = kg.generateKey();  
  31.         // 获取密匙数据  
  32.         //byte rawKeyData[] = key.getEncoded();  
  33.         byte rawKeyData[] = "sucre".getBytes();  
  34.         System.out.println("密匙===>" + rawKeyData);  
  35.  
  36.         String str = "hi.baidu.com/beijingalana"// 待加密数据  
  37.         // 2.1 >>> 调用加密方法  
  38.         byte[] encryptedData = encrypt(rawKeyData, str);  
  39.         // 3.1 >>> 调用解密方法  
  40.         decrypt(rawKeyData, encryptedData);  
  41.     }  
  42.  
  43.     /**  
  44.     * 加密方法  
  45.     *   
  46.     * @param rawKeyData  
  47.     * @param str  
  48.     * @return  
  49.     * @throws InvalidKeyException  
  50.     * @throws NoSuchAlgorithmException  
  51.     * @throws IllegalBlockSizeException  
  52.     * @throws BadPaddingException  
  53.     * @throws NoSuchPaddingException  
  54.     * @throws InvalidKeySpecException  
  55.     */ 
  56.     public static byte[] encrypt(byte rawKeyData[], String str)  
  57.             throws InvalidKeyException, NoSuchAlgorithmException,  
  58.             IllegalBlockSizeException, BadPaddingException,  
  59.             NoSuchPaddingException, InvalidKeySpecException {  
  60.         // DES算法要求有一个可信任的随机数源  
  61.         SecureRandom sr = new SecureRandom();  
  62.         // 从原始密匙数据创建一个DESKeySpec对象  
  63.         DESKeySpec dks = new DESKeySpec(rawKeyData);  
  64.         // 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象  
  65.         SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");  
  66.         SecretKey key = keyFactory.generateSecret(dks);  
  67.         // Cipher对象实际完成加密操作  
  68.         Cipher cipher = Cipher.getInstance("DES");  
  69.         // 用密匙初始化Cipher对象  
  70.         cipher.init(Cipher.ENCRYPT_MODE, key, sr);  
  71.         // 现在,获取数据并加密  
  72.         byte data[] = str.getBytes();  
  73.         // 正式执行加密操作  
  74.         byte[] encryptedData = cipher.doFinal(data);  
  75.  
  76.         System.out.println("加密后===>" + encryptedData);  
  77.         return encryptedData;  
  78.     }  
  79.  
  80.     /**  
  81.     * 解密方法  
  82.     *   
  83.     * @param rawKeyData  
  84.     * @param encryptedData  
  85.     * @throws IllegalBlockSizeException  
  86.     * @throws BadPaddingException  
  87.     * @throws InvalidKeyException  
  88.     * @throws NoSuchAlgorithmException  
  89.     * @throws NoSuchPaddingException  
  90.     * @throws InvalidKeySpecException  
  91.     */ 
  92.     public static String decrypt(byte rawKeyData[], byte[] encryptedData)  
  93.             throws IllegalBlockSizeException, BadPaddingException,  
  94.             InvalidKeyException, NoSuchAlgorithmException,  
  95.             NoSuchPaddingException, InvalidKeySpecException {  
  96.         // DES算法要求有一个可信任的随机数源  
  97.         SecureRandom sr = new SecureRandom();  
  98.         // 从原始密匙数据创建一个DESKeySpec对象  
  99.         DESKeySpec dks = new DESKeySpec(rawKeyData);  
  100.         // 创建一个密匙工厂,然后用它把DESKeySpec对象转换成一个SecretKey对象  
  101.         SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");  
  102.         SecretKey key = keyFactory.generateSecret(dks);  
  103.         // Cipher对象实际完成解密操作  
  104.         Cipher cipher = Cipher.getInstance("DES");  
  105.         // 用密匙初始化Cipher对象  
  106.         cipher.init(Cipher.DECRYPT_MODE, key, sr);  
  107.         // 正式执行解密操作  
  108.         byte decryptedData[] = cipher.doFinal(encryptedData);  
  109.         System.out.println("解密后===>" + new String(decryptedData));  
  110.         return new String(decryptedData);  
  111.     }  
  112.  
  113. }  

在使用的时候密码数据可以调用固定的方法,也可以自己填写,我是自己写的。

本文出自 “博客即日起停止更新” 博客,谢绝转载!

你可能感兴趣的:(java,加密,解密,des,休闲)