开发者

如何用java给文件加密的简单实现

目录
  • 文件加密
  • 文件解密
  • 总结

思路:文件加密,简单来说就是把文件读取出来,把读取出来的字节码数组进行遍历,把每一个码值和一个秘钥(随便一个数)进行异或运算,将运算后的结果全部写入到文件里。因为文件的码值全都做了改变,文件自然就无法打开了,这是加密过程。解密过程就是再执行一次,因为数字对另一个数进行两次异或运算等于数字本身。再异或一次码值就恢复原样了,文件自然也就可以恢复原样。

文件加密

import Java.io.*;
import java.util.ArrayList;
import java.util.List;
/**
 * 文件加密
 */
public class FileEncrypt {
    public static void main(String[] args) throws IOException {
        // 需要加密/解密的文件路径
        String inputPath = "out.txt";
        // 加密/解密后的文件路径
        String outPath = "input.txt";
        // 用于存储文件字节码的集合数组
        List<Byte> byteList = new ArrayList<>();
        // 秘钥
        Byte key = 17;
        // 读取文件
        readFile(inputPath, byteList);
        // 加密/解密
        encryption(b编程yteList, key);
        // 生成加密/解密后的文件
        writeText(byteList, outPath);
    }
    /**
     * 读取文件
     *
     * @param inputPath 文件输入路径
     * @param byteList  文件的字节码列表
     * @throws IOException
     */
    public static void readFile(String inputPath, List<Byte> byteList) throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(inputPath));
        byte[] bytes = new byte[1024];
        int len;
        while ((编程len = bis.read(bytes)) != -1) {
            for (int i = 0; i < len; i++) {
                byteList.add(bytes[i]);
            }
        }
        bis.close();
    }
    /**
     * 加密/解密
     *
     * @param byteList
     * @param key
     */
    public static void encryption(List<Byte> byteList, byte key) {
        for (int i = 0; i < byteList.size(); i++) {
            Byte aByte = byteList.get(i);
            // 把集合中的字节码与秘钥或运算
            Byte enNum = (byte) (aByte ^ key);
            // 把加密后的数替换原集合中的数
            byteList.set(i, enNum);
        }
    }
    /**
     * 生成加密/解密后的文件
     *
     * @param byteList
     * @param outPath
     * @throws IOException
     */
    public static void writeText(List<Byte> byteList, String outPath) throws IOException {
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outPath));
        byte[] tempByte = new byte[byteList.size()];
        for (int i = 0; i < byteList.size(); i++) {
            tempByte[i] = byteList.get(i);
        }
        bos.write(tempByte);
        bos.close();
    }
}

input.txt文件内容

如何用java给文件加密的简单实现

将input的内容加密后,编程客栈写入out.txjst中

如何用java给文件加密的简单实现

文件解密

如何用java给文件加密的简单实现

如何用java给文件加密的简单实现

总结

这就是对文件内容加密的简单实现,这里的文件可以换成图片或者其他类型的文件,都可以。另外,完全可以把inputPath和outPath设置成一样,这样就不会产生新文件了,运行一次文件加密,再运行一次,文件解密,非常方便。

到此这篇关于如何用java给文件加密的简单实现的文章就介绍到这了,更多相关java文件加密内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(w编程ww.cppcns.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜