搜档网
当前位置:搜档网 › 文件加密解密源码

文件加密解密源码

资源简介文件加密解密算法(Java源码)


java,file,算法,加密解密,java源码


package com.crypto.encrypt;


import java.security.SecureRandom;

import java.io.*;

import javax.crypto.spec.DESKeySpec;

import javax.crypto.SecretKey;

import javax.crypto.SecretKeyFactory;

import javax.crypto.Cipher;

import java.security.InvalidKeyException;

import java.security.NoSuchAlgorithmException;

import java.security.spec.InvalidKeySpecException;

import javax.crypto.NoSuchPaddingException;

import javax.crypto.BadPaddingException;

import javax.crypto.IllegalBlockSizeException;

import https://www.sodocs.net/doc/1710589645.html,ng.reflect.Constructor;

import java.security.spec.KeySpec;

import https://www.sodocs.net/doc/1710589645.html,ng.reflect.InvocationTargetException;


public class EncryptData {


private String keyfile=null;


public EncryptData() {

}


public EncryptData(String keyfile) {

this.keyfile=keyfile;

}


/**

* 加密文件

* @param filename String 源路径

* @param filenamekey String 加密后的路径

*/

public void createEncryptData(String filename,String filenamekey) throws

IllegalStateException, IllegalBlockSizeException, BadPaddingException,

NoSuchPaddingException, InvalidKeySpecException, NoSuchAlgorithmException,

InvalidKeyException, IOException, InstantiationException,

IllegalAccessException, IllegalArgumentException,

InvocationTargetException, NoSuchMethodException, SecurityException,

ClassNotFoundException, IllegalStateException, IllegalBlockSizeException,

BadPaddingException, NoSuchPaddingException, InvalidKeySpecException,

NoSuchAlgorithmException, InvalidKeyException, IOException {

//验证keyfile

if(keyfile==null || keyfile.equals(""))

{

throw new NullPointerException("无效的key文件路径");

}


encryptData(filename,filenamekey);

}


/**

* 加密类文件

* @param filename String 原始的类文件

* @param encryptfile String 加密后的类文件

* @throws IOException

* @throws InvalidKeyException

* @throws NoSuchAlgorithmException

* @throws InvalidKeySpecException

* @throws NoSuchPaddingException

* @throws NoSuchAlgorithmException

* @throws BadPaddingException

* @throws IllegalBlockSizeException

* @throws IllegalStateException

*/

private void encryptData(String filename,String encryptfile) throws IOException, InvalidKeyException,

NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException,

NoSuchAlgorithmException, BadPaddingException, IllegalBlockSizeException,

IllegalStateException, ClassNotFoundException, SecurityException,

NoSuchMethodException, InvocationTargetException,

IllegalArgumentException, IllegalAccessException, InstantiationException {


byte data[]=Util.readFile(filename);

// 执行加密操作

byte encryptedClassData[] = getencryptData(data);

// 保存加密后的文件,覆盖原有的类文件。

Util.writeFile(encryptedClassData,encryptfile);



}

/**

* 直接获得加密数据

* @param bytes byte[]

* @throws IllegalStateException

* @throws IllegalBlockSizeException

* @throws BadPaddingException

* @throws InvalidKeyException

* @throws NoSuchPaddingException

* @throws InvalidKeySpecException

* @throws NoSuchAlgorithmException

* @throws InstantiationException

* @throws IllegalAccessException

* @throws IllegalArgumentException

* @throws InvocationTargetException

* @throws NoSuchMethodException

* @throws SecurityException

* @throws ClassNotFoundException

* @throws IOException

* @return byte[]

*/

public byte[] createEncryptData(byte[] bytes) throws IllegalStateException,

IllegalBlockSizeException, BadPaddingException, InvalidKeyException,

NoSuchPaddingException, InvalidKeySpecException, NoSuchAlgorithmException,

InstantiationException, IllegalAccessException, IllegalArgumentException,

InvocationTargetException, NoSuchMethodException, SecurityException,

ClassNotFoundException, IOException {

bytes=getencryptData(bytes);

return bytes;

}


private byte[] getencryptData(byte[] bytes) throws IOException,

ClassNotFoundException, SecurityException, NoSuchMethodException,

InvocationTargetException, IllegalArgumentException,

IllegalAccessException, InstantiationException, NoSuchAlgorithmException,

InvalidKeySpecException, NoSuchPaddingException, NoSuchAlgorithmException,

InvalidKeyException, BadPaddingException, IllegalBlockSizeException,

IllegalStateException {

// 产生一个可信任的随机数源

SecureRandom sr = new SecureRandom();

//从密钥文件key Filename中得到密钥数据

byte[] rawKeyData = Util.readFile(keyfile);

// 从原始密钥数据创建DESKeySpec对象

Class classkeyspec=Class.forName(Util.getValue("keyspec"));

Constructor constructor = classkeyspec.getConstructor(new Class[]{byte[].class});

KeySpec dks = (KeySpec) constructor.newInstance(new Object[]{rawKeyData});

// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(Util.getAlgorithm());

SecretKey key = keyFactory.generateSecret(dks);

// Cipher对象实际完成加密操作

Cipher cipher = Cipher.getInstance(Util.getAlgorithm());

// 用密钥初始化Cipher对象

cipher.init(Cipher.ENCRYPT_MODE, key, sr);

// 执行加密操作

bytes = cipher.doFinal(bytes);

// 返回字节数组

return bytes;

}

/**

* 设置key文件路径

* @param keyfile String

*/

public void setKeyFile(String keyfile)

{

this.keyfile=keyfile;

}


}


相关主题