⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encryptdata.java

📁 利用DES加密/解密数据的实例
💻 JAVA
字号:


import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.security.spec.*;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author wu changhai
 * @version 1.0
 */

public class encryptData {
  public encryptData() {
  }
  public byte[] readByteFile(String fileName){
    File f=new File(fileName);
    FileInputStream fin=null;
     byte[] bin=null;
     if(f.exists()){
       try {
        fin = new FileInputStream(f);

      }
      catch (FileNotFoundException ex) {
      }
      try {
        bin=new byte[(int)f.length()];
        fin.read(bin);
        fin.close();
      }
      catch (IOException ex1) {
      }
    }else{
     javax.swing.JOptionPane.showMessageDialog(null,"没有找到"+fileName);
     System.exit(1);
   }
     return bin;
  }
  public void writeByteToFile(String fileName,byte[] data){
    File f=new File(fileName);
    FileOutputStream fout=null;
    if(f.exists()){
       try {
        fout = new FileOutputStream(f);
      }
      catch (FileNotFoundException ex) {
      }
      try {
        fout.write(data);
        fout.close();
      }
      catch (IOException ex1) {
      }
    }else{
     javax.swing.JOptionPane.showMessageDialog(null,"没有找到"+fileName);
     System.exit(1);
   }

  }
  public void encryptFile(String fileName){
    byte[] filedata=readByteFile(fileName);
    if(filedata.length>0)
//    saveKey();
    writeByteToFile(fileName,encryptData(filedata));
  }
  public void decryptFile(String fileName){
    byte[] filedata=readByteFile(fileName);
    if(filedata.length>0){
//      System.out.println(decrytData(filedata));
    writeByteToFile(fileName,decrytData(filedata));
    }
  }
  public byte[] decrytData(byte[] encryptedData){
    byte[] bs=loadKey();
    byte[] data=null;
    DESKeySpec dks=null;
    SecretKey key=null;
    Cipher cipher=null;
    SecureRandom desr=new SecureRandom();
    try {
        cipher = Cipher.getInstance("DES");
      }
      catch (NoSuchAlgorithmException ex3) {
      }
      catch (NoSuchPaddingException ex3) {
      }
      if(bs!=null){
        try {
          dks = new DESKeySpec(bs);
        }
        catch (InvalidKeyException ex) {
          ex.printStackTrace();
        }
        try {
          SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
          try {
             key = keyFactory.generateSecret(dks);
          }
          catch (InvalidKeySpecException ex2) {
            ex2.printStackTrace();
          }
        }
        catch (NoSuchAlgorithmException ex1) {
          ex1.printStackTrace();
        }
        try {
          cipher.init(Cipher.DECRYPT_MODE, key, desr);
        }
        catch (InvalidKeyException ex4) {
          ex4.printStackTrace();
        }
        try {
          data = cipher.doFinal(encryptedData);
        }
        catch (BadPaddingException ex5) {
          ex5.printStackTrace();
        }
        catch (IllegalBlockSizeException ex5) {
          ex5.printStackTrace();
        }
        catch (IllegalStateException ex5) {
          ex5.printStackTrace();
        }
      }else{
        System.out.println("No encryption data");
      }
//      System.out.println(data.toString());
      return data;
//    return data;
  }
  public byte[] encryptData(byte[] data){
      SecureRandom ensr=new SecureRandom();
      byte[] bs=loadKey();
      byte[] encryptedData=null;
      DESKeySpec dks=null;
      SecretKey key=null;
      Cipher cipher=null;
      try {
        cipher = Cipher.getInstance("DES");
      }
      catch (NoSuchAlgorithmException ex3) {
      }
      catch (NoSuchPaddingException ex3) {
      }
      if(bs!=null){
        try {
          dks = new DESKeySpec(bs);
        }
        catch (InvalidKeyException ex) {
          ex.printStackTrace();
        }
        try {
          SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
          try {
             key = keyFactory.generateSecret(dks);
          }
          catch (InvalidKeySpecException ex2) {
            ex2.printStackTrace();
          }
        }
        catch (NoSuchAlgorithmException ex1) {
          ex1.printStackTrace();
        }
        try {
          cipher.init(Cipher.ENCRYPT_MODE, key, ensr);
        }
        catch (InvalidKeyException ex4) {
          ex4.printStackTrace();
        }
        try {
          encryptedData = cipher.doFinal(data);
        }
        catch (BadPaddingException ex5) {
        }
        catch (IllegalBlockSizeException ex5) {
        }
        catch (IllegalStateException ex5) {
        }
    //    Cipher cipher
      }
      return encryptedData;
  }
  public byte[] generateKey(){
    byte[] b=null;
    SecureRandom sr=new SecureRandom();
    try {
      KeyGenerator kg = KeyGenerator.getInstance("DES");
      kg.init(sr);
      SecretKey key=kg.generateKey();
      b=key.getEncoded();
    }
    catch (NoSuchAlgorithmException ex) {
      ex.printStackTrace();
    }
    return b;
  }
  public byte[] loadKey(){
//     File f=new File(".//keysn.key");
     return readByteFile(".//keysn.key");
/*     FileInputStream fi=null;
     byte[] bkey=null;
     if(f.exists()){
      try {
        fi = new FileInputStream(f);
      }
      catch (FileNotFoundException ex) {
        ex.printStackTrace();
      }
      try {
        bkey=new byte[(int)f.length()];
        fi.read(bkey);
        fi.close();
      }
      catch (IOException ex1) {
        ex1.printStackTrace();
      }
     }
     return bkey;
  */
  }
  public void saveKey(){
     File f=new File(".\\keysn.key");
     FileOutputStream fo=null;
     byte[] bkey=generateKey();
     if(!f.exists())
      try {
        f.createNewFile();
      }
      catch (IOException ex2) {
      }
     if(bkey!=null){
      try {
        fo = new FileOutputStream(f);
      }
      catch (FileNotFoundException ex) {
        ex.printStackTrace();
      }
      try {
        fo.write(bkey);
        fo.close();
      }
      catch (IOException ex1) {
        ex1.printStackTrace();
      }
     }else{

       javax.swing.JOptionPane.showMessageDialog(null,"密钥生成失败!!");
       System.exit(1);
     }
  }
/*  public static void main(String[] args){
    encryptData ec=new encryptData();
    ec.decryptFile(".\\xxx.txt");
  }*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -