黑马程序员技术交流社区

标题: 自己写了个加密解密的小程序,懒得写界面了,一起研究研究 [打印本页]

作者: jiajun    时间: 2016-8-6 13:04
标题: 自己写了个加密解密的小程序,懒得写界面了,一起研究研究
/**
对文件进行加密处理

方法:
1.定义字节输入流接收文件地址
2.对读取到的字节进行异或运算^28
3.将新的字节文件写入到文件中
*/
import java.io.*;


public class LockFile

{
        public static void main(String[] args)
        {
                //lockFile("D:\\Java\\jdk1.8.0_92\\study\\Test\\Beer.java");
                unLockFile("D:\\Java\\jdk1.8.0_92\\study\\Test\\Beer.java.lock");
        }
        public static void lockFile(String adrs)
        {
                FileInputStream fis=null;  //定义字节输入流用于读取文件
                FileOutputStream fos=null;  //定义字节写出流用于写出文件
                File file=null;
                try
                {
                        file=new File(adrs);
                        fis=new FileInputStream(file);
                        fos=new FileOutputStream(adrs+".lock");
                        byte[] temp=new byte[1024*4];//定义缓冲数组
                        int len=0;//定义字节流写入缓冲数组长度
                        while ((len=fis.read(temp))!=-1)
                        {
                                for (int i=0;i<len ;i++ )
                                {
                                        temp[i]=(byte)(temp[i]^28);  //对字节数组进行加密处理
                                }
                                fos.write(temp,0,len);  //加密后的字节写入新文件
                        }
                       
                }
                catch (IOException e)
                {
                        return;
                }
                finally
                {
                        try
                        {
                                if (fis!=null)
                                {
                                        fis.close();
                                }
                        }
                        catch (IOException e)
                        {
                        }
                        try
                        {
                                if (fos!=null)
                                {
                                        fos.close();
                                }
                        }
                        catch (IOException e)
                        {
                        }
                }
                file.delete();
        }
        public static void unLockFile(String adrs)
        {
                FileInputStream fis=null;  //定义字节输入流用于读取文件
                FileOutputStream fos=null;  //定义字节写出流用于写出文件
                File file=null;
                try
                {
                        file=new File(adrs);
                        fis=new FileInputStream(file);
                        FileNameOperation fno=new FileNameOperation(file);
                        fos=new FileOutputStream(fno.removeSuffix());
                        byte[] temp=new byte[1024*4];//定义缓冲数组
                        int len=0;//定义字节流写入缓冲数组长度
                        while ((len=fis.read(temp))!=-1)
                        {
                                for (int i=0;i<len ;i++ )
                                {
                                        temp[i]=(byte)(temp[i]^28);  //对字节数组进行加密处理
                                }
                                fos.write(temp,0,len);  //加密后的字节写入新文件
                        }
                       

                }
                catch (IOException e)
                {
                        return;
                }
                finally
                {
                        try
                        {
                                if (fis!=null)
                                {
                                        fis.close();
                                }
                        }
                        catch (IOException e)
                        {
                        }
                        try
                        {
                                if (fos!=null)
                                {
                                        fos.close();
                                }

                        }
                        catch (IOException e)
                        {
                        }
                }
                file.delete();
       
        }
}

class FileNameOperation //定义一个文件名操作类
{
        private File file;
        private String adrs;
        FileNameOperation(File file)
        {
                this.file=file;
                this.adrs=file.getAbsolutePath();
        }
        public String removeSuffix()
        {
                int index=getIndex();
                return adrs.substring(0,index);
        }
        public String getSuffix()
        {
                int index=getIndex();
                return adrs.substring(index,adrs.length()-1);
        }
        public int getIndex()
        {
                return adrs.lastIndexOf(".");
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2