文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-12-23 05:56

关注

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

文件加密

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(byteList, key);        // 生成加密/解密后的文件        writeText(byteList, outPath);    }        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();    }        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);        }    }        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文件内容
在这里插入图片描述
将input的内容加密后,写入out.txt中
在这里插入图片描述

文件解密

在这里插入图片描述
在这里插入图片描述

总结

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

来源地址:https://blog.csdn.net/qq_42108331/article/details/130716429

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯