java fileandenc_java文件加解密-移位方式实现

import java.io.Closeable;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

public class FileEncAndDec {

private static final int numOfEncAndDec = 0x88; //

加密解密秘钥

private static int dataOfFile = 0; // 文件字节内容

private static int beatchLength = 8196;//批量加密的字符长度单位

private static int encEndIndex = 10;//批量加密的前多少字节

public static void main(String[] args) {

try

{

File srcFile = new File("D:\\a.txt"); // 初始文件

File encFile = new File("D:\\b.txt"); // 加密文件

File decFile = new File("D:\\c.txt"); // 解密文件

encFile(srcFile, encFile);//加密操作(适合文本文件、内容不超过1M)

decFile(encFile,decFile);//解密操作

srcFile = new File("D:\\a.zip"); // 初始文件

encFile = new File("D:\\b.zip"); // 加密文件

decFile = new File("D:\\c.zip"); // 解密文件

encFileQuickly(srcFile, encFile);//快速加密操作(适合于大文件、图片等)

decFileQuickly(encFile,decFile);//快速解密操作

} catch (Exception e) {

e.printStackTrace();

}

}

public static void encFile(File srcFile, File encFile) throws

Exception {

long start = System.currentTimeMillis();

if (!srcFile.exists()) {

System.out.println("source file not exixt");

return;

}

if (!encFile.exists()) {

System.out.println("encrypt file created");

encFile.createNewFile();

}

encAndDecFile(srcFile,encFile,true);

System.out.println("enc

time:"+(System.currentTimeMillis()-start));

}

public static void encFileQuickly(File srcFile, File encFile)

throws Exception {

long start = System.currentTimeMillis();

if (!srcFile.exists()) {

System.out.println("source file not exixt");

return;

}

if (!encFile.exists()) {

System.out.println("encrypt file created");

encFile.createNewFile();

}

encAndDecFile(srcFile,encFile,false);

System.out.println("enc quickly

time:"+(System.currentTimeMillis()-start));

}

public static void decFile(File encFile, File decFile) throws

Exception {

long start = System.currentTimeMillis();

if (!encFile.exists()) {

System.out.println("encrypt file not exixt");

return;

}

if (!decFile.exists()) {

System.out.println("decrypt file created");

decFile.createNewFile();

}

encAndDecFile(encFile,decFile,true);

System.out.println("dec

time:"+(System.currentTimeMillis()-start));

}

public static void decFileQuickly(File encFile, File decFile)

throws Exception {

long start = System.currentTimeMillis();

if (!encFile.exists()) {

System.out.println("encrypt file not exixt");

return;

}

if (!decFile.exists()) {

System.out.println("decrypt file created");

decFile.createNewFile();

}

encAndDecFile(encFile,decFile,false);

System.out.println("dec quickly

time:"+(System.currentTimeMillis()-start));

}

private static void encAndDecFile(File srcFile, File

targetFile,Boolean full) throws IOException

{

InputStream fis = new FileInputStream(srcFile);

OutputStream fos = new FileOutputStream(targetFile);

if(full) {

while ((dataOfFile = fis.read()) > -1) {

fos.write(dataOfFile ^ numOfEncAndDec);

}

}else {

byte[] buff = new byte[beatchLength];

while ((dataOfFile = fis.read(buff)) > -1) {

for (int i = 0; i

buff[i] = (byte) (buff[i]^numOfEncAndDec);

}

fos.write(buff, 0, dataOfFile);

}

}

fos.flush();

cleanStream(fis,fos);

}

private static void cleanStream(Closeable ... ios) throws

IOException

{

if(ios == null)

{

return;

}

for(Closeable io:ios)

{

io.close();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值