做网站有时会处理一些上传下载的文件可能会用到加解密功能以下是一个加解密方法
Java代码
import javaioFile;
import javaioFileInputStream;
import javaioFileOutputStream;
import javaioIOException;
import nfConf;
import montimeTimeHandler;
/**
* 加解密单元
* @author lupingui
* ::
*/
public class EncryptDecrypt {
//加解密KEY这个不能变动这里可以由任意的字符组成尽量用特殊字符
static final byte[] KEYVALUE = getBytes();
//读取字节的长度
static final int BUFFERLEN = ;
//加密临时存储目录
static final String TRANSIT_DIR_ENC = ;
//解密临时存储目录
static final String TRANSIT_DIR_DEC = ;
/**
* 文件加密
* @param oldFile待加密文件
* @param saveFileName加密后文件保存路径
* @return
* @throws IOException
*/
public static boolean encryptFile(File oldFile String saveFileName) throws IOException{
//如果传入的文件不存在或者不是文件则直接返回
if (!oldFileexists() || !oldFileisFile()){
return false;
}
FileInputStream in = new FileInputStream(oldFile);
//加密后存储的文件
File file = new File(saveFileName);
if (!fileexists()){
return false;
}
//读取待加密文件加密后写入加密存储文件中
FileOutputStream out = new FileOutputStream(file);
int c pos keylen;
pos = ;
keylen = KEYVALUElength;
byte buffer[] = new byte[BUFFERLEN];
while ((c = inread(buffer)) != ) {
for (int i = ; i < c; i++) {
buffer[i] ^= KEYVALUE[pos];
outwrite(buffer[i]);
pos++;
if (pos == keylen){
pos = ;
}
}
}
inclose();
outclose();
return true;
}
/**
* 文件加密
* @param oldFile:待加密文件
* @param saveFile加密后的文件
* @return
* @throws IOException
*/
public static boolean encryptFile(File oldFile File saveFile) throws IOException{
//如果传入的文件不存在或者不是文件则直接返回
if (!oldFileexists() || !oldFileisFile() || !saveFileexists() || !saveFileisFile()){
return false;
}
FileInputStream in = new FileInputStream(oldFile);
//读取待加密文件加密后写入加密存储文件中
FileOutputStream out = new FileOutputStream(saveFile);
int c pos keylen;
pos = ;
keylen = KEYVALUElength;
byte buffer[] = new byte[BUFFERLEN];
while ((c = inread(buffer)) != ) {
for (int i = ; i < c; i++) {
buffer[i] ^= KEYVALUE[pos];
outwrite(buffer[i]);
pos++;
if (pos == keylen){
pos = ;
}
}
}
inclose();
outclose();
return true;
}
/**
* 文件加密
* @param oldFile待加密文件
* @return
* @throws IOException
*/
public static File encryptFile(File oldFile) throws IOException{
//如果传入的文件不存在或者不是文件则直接返回
if (!oldFileexists() || !oldFileisFile()){
return null;
}
FileInputStream in = new FileInputStream(oldFile);
//临时加密文件存储目录
File dirFile = new File(TRANSIT_DIR_ENC);
//如果临时存储目录不存在或不是目录则直接返回
if (!dirFileexists() || !dirFileisDirectory()){
return null;
}
//加密后存储的文件
File file = new File(dirFileenc_ + TimeHandlergetInstance()getTimeInMillis() + _ + oldFilegetName());
if (!fileexists()){
filecreateNewFile();
}
//读取待加密文件加密后写入加密存储文件中
FileOutputStream out = new FileOutputStream(file);
int c pos keylen;
pos = ;
keylen = KEYVALUElength;
byte buffer[] = new byte[BUFFERLEN];
while ((c = inread(buffer)) != ) {
for (int i = ; i < c; i++) {
buffer[i] ^= KEYVALUE[pos];
outwrite(buffer[i]);
pos++;
if (pos == keylen){
pos = ;
}
}
}
inclose();
outclose();
//返回加密后的文件
return file;
}
/**
* 文件加密
* @param oldFileName待加密文件路径
* @return
* @throws IOException
* @throws Exception
*/
public static File encryptFile(String oldFileName) throws IOException {
//如果待加密文件路径不正确则直接返回
if (oldFileName == null || oldFileNametrim()equals()){
return null;
}
//待加密文件
File oldFile = new File(oldFileName);
//如果传入的文件不存在或者不是文件则直接返回
if (!oldFileexists() || !oldFileisFile()){
return null;
}
//调用文件加密方法并返回结果
return encryptFile(oldFile);
}
/**
* 文件解密
* @param oldFile待解密文件
* @return
* @throws IOException
*/
public static File decryptFile(File oldFile) throws IOException{
//如果待解密文件不存在或者不是文件则直接返回
if (!oldFileexists() || !oldFileisFile()){
return null;
}
FileInputStream in = new FileInputStream(oldFile);
//临时解密文件存储目录
File dirFile = new File(TRANSIT_DIR_DEC);
//如果临时解密文件存储目录不存在或不是目录则返回
if (!dirFileexists() || !dirFileisDirectory()){
return null;
}
//解密存储文件
File file = new File(dirFiledec_ + TimeHandlergetInstance()getTimeInMillis() + _ + oldFilegetName()substring(oldFilegetName()lastIndexOf()));
if (!fileexists()){
filecreateNewFile();
}
//读取待解密文件并进行解密存储
FileOutputStream out = new FileOutputStream(file);
int c pos keylen;
pos = ;
keylen = KEYVALUElength;
byte buffer[] = new byte[BUFFERLEN];
while ((c = inread(buffer)) != ) {
for (int i = ; i < c; i++) {
buffer[i] ^= KEYVALUE[pos];
outwrite(buffer[i]);
pos++;
if (pos == keylen){
pos = ;
}
}
}
inclose();
outclose();
//返回解密结果文件
return file;
}
/**
* 文件解密
* @param oldFileName待解密文件路径
* @return
* @throws Exception
*/
public static File decryptFile(String oldFileName) throws Exception {
//如果待解密文件路径不正确则直接返回
if (oldFileName == null || oldFileNametrim()equals()){
return null;
}
//待解密文件
File oldFile = new File(oldFileName);
//如果待解密文件不存在或不是文件则直接返回
if (!oldFileexists() || !oldFileisFile()){
return null;
}
//调用文件解密方法并返回结果
return decryptFile(oldFile);
}
}