java 使用 DES加密解密

java 使用 DES加密解密

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
/**
 * DES加密解密
 * @author wy
 *  2016.9.8
 */
public class DESTest {

 public static String str = "這是需要加密的des字符串";
 //這是加密字符串的密碼,通過當前字符串加密和解密  (密碼需要8位以上)
 public static String password = "5d111121d122";
 
 public static void main(String[] args) throws Exception{
  //加密獲得加密後字節
  byte [] encrypt = encryptStr(str,password);
  System.out.println("加密過後的字節對象:"+encrypt);
  //解密
  byte [] decrypt = decryptStr(encrypt,password);
  System.out.println("解密後的字符串:"+new String(decrypt));
 }
 /**
  * 加密字符串
  * @param mes  加密內容
  * @param password  通過當前字符串加密和解密  (如果給定的密鑰內容短於 8 個字節。會拋出InvalidKeyException異常)
  * @return
  */
 public  static byte[] encryptStr(String mes,String password){
  try {
   //此類指定一個 DES 密鑰。
  DESKeySpec desKeySpec = new DESKeySpec(password.getBytes());
  //獲得祕鑰工廠
  SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DES");
  //生成祕鑰
  SecretKey secretKey = secretKeyFactory.generateSecret(desKeySpec);
  //操作,加密過程
  Cipher cipher = Cipher.getInstance("DES");
  cipher.init(Cipher.ENCRYPT_MODE,secretKey);
  return cipher.doFinal(mes.getBytes());
  
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return null;
 }
 /**
  * 解密操作
  * @param b  用DES加密過後得到的字節數組
  * @param pasword   通過當前字符串加密和解密  (如果給定的密鑰內容短於 8 個字節。會拋出InvalidKeyException異常)
  * @return
  */
 public static byte[] decryptStr(byte[] b ,String pasword){
  try {
   //此類指定一個 DES 密鑰。
  DESKeySpec desKeySpec = new DESKeySpec(password.getBytes());
  //獲得祕鑰工廠
  SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DES");
  SecretKey secretKey = secretKeyFactory.generateSecret(desKeySpec);
  //操作,加密過程
  Cipher cipher = Cipher.getInstance("DES");
  cipher.init(Cipher.DECRYPT_MODE, secretKey);
  return cipher.doFinal(b);
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return null;
 }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章