java⼤⽂件存储加密_JavaIO--实现⽂件的加密解密我们知道⽂件存储的⽅式在计算机当中是以字节的⽅式进⾏存储的,可以通过对⽂件字节的操作来实现⽂件的加密。
下⾯的例⼦是通过读取⽂件的字节,然后使字节中的每⼀位取反(1变0,0变1),再进⾏倒置,来实现加解密过程。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;
/**
* @author 朱俊伟
* @date 2020/11/15
*/
public class FileEncrytionTest
{
public static void main(String[] args)
{
//源⽂件
File file1 = new File("D:\\系统⽂件夹\\桌⾯\\");
/
/加密⽂件
File file2 = new File("D:\\系统⽂件夹\\桌⾯\\");
//解密⽂件
File file3 = new File("D:\\系统⽂件夹\\桌⾯\\");
//加密⽅法
EnFile(file1,file2);
//解密⽅法
DecFile(file2,file3);
}
//加密⽅法
public static void EnFile(File srcFile,File tarFile)
java加密方式有哪些
{
BufferedInputStream bis = null;
BufferedOutputStream bos = null ;
//源⽂件
File file1 = srcFile;
//加密⽂件
File file2 = tarFile;
try
{
InputStream is = new FileInputStream(file1); OutputStream os = new FileOutputStream(file2);
bis = new BufferedInputStream(is);
bos = new BufferedOutputStream(os);
byte[] data = new byte[100];
int len = 0 ;
while((len = ad(data))!= -1)
{
byte[] temp = pyOfRange(data,0,len); System.out.println("加密读取:"+String(temp)); bos.write(reverseArray(temp));
System.out.println("加密写⼊:"+String(temp)); }
} catch ( Exception e)
{
e.printStackTrace();
} finally
{
try
{
if(bis != null)
{
/* 关闭管⼦ */
bis.close();
bis = null ;
}
}catch(IOException e)
{
e.printStackTrace();
}
try
{
if(bos != null)
{
/* 关闭管⼦ */
bos.close();
bos = null ;
}
}catch(IOException e)
{
e.printStackTrace();
}
}
}
//解密⽅法
public static void DecFile(File srcFile,File tarFile) {
BufferedInputStream bis = null; BufferedOutputStream bos = null ;
//源加密⽂件
File file1 = srcFile;
//解密⽂件
File file2 = tarFile;
try
{
InputStream is = new FileInputStream(file1); OutputStream os = new FileOutputStream(file2); bis = new BufferedInputStream(is);
bos = new BufferedOutputStream(os);
byte[] data = new byte[100];
int len = 0 ;
while((len = ad(data))!= -1)
{
byte[] temp = pyOfRange(data,0,len); System.out.println("解密读取:"+String(temp)); bos.write(reverseArray(temp));
System.out.println("解密写⼊:"+String(temp)); }
} catch ( Exception e)
{
e.printStackTrace();
} finally
{
try
{
if(bis != null)
{
/* 关闭管⼦ */
bis.close();
bis = null ;
}
}catch(IOException e)
{
e.printStackTrace();
}
try
{
if(bos != null)
{
/
* 关闭管⼦ */
bos.close();
bos = null ;
}
}catch(IOException e)
{
e.printStackTrace();
}
}
}
/**
* 字节数组的各位取反,并倒置
* @param bytes
* @return
*/
public static byte[] reverseArray(byte[] bytes){ for (int i=0; i
byte b = (byte) ~bytes[i];
bytes[i] = (byte) ~bytes[bytes.length-i-1]; bytes[bytes.length-i-1] = b;
}
return bytes;
}
}
控制台打印
三个⽂件对⽐。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论