文件加密是建立在文件复制的基础之上,说白了就是将一个文件复制过去,期间加上一些干扰信息,致使文件发生改变,来达到文件加密的效果.

文件解密是根据文件相应的加密,来进行解密.

本次加密是比较简层次的加密,用到了java中字节流,io字节流

io字节流,写的时候需要一个数组,假如这个字节数组大小是100.

复制文件,先读文件,再写文件,我读的时候调用read(byte[] b)方法,可以使用read(byte[] b,st,end);这里假设读进去是20-30.

st代表从数组的第st个写end个字节.

数组剩下的部分我用-128-127的随机数填进去

写的时候把整个数组写进去,到最后如果读出来不够100个,就直接写read(byte[] b,0,len),len代表读的有效字节数.

文件解密:

解密是每次读100个,读的时被加密的文件.

但是写的时候不能全写,因为其中只有20-30是有效的字节,以及最后一行的所有事有效的

因此解密就是写的时候只写20-30.到最后一行,不满100的就全写,因为我加密的时候最后一行如果不满100,我是全读出来的.

附上代码:

package com.info.test.jiami;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.Random;public class MyEncryption {private static int start= 20;private static int size= 100;private static int stlen= 30;public static void main(String[] args) {/* 源文件 */String path = "F:\\test2\\1.png";/* 加密文件 */String path2 = "F:\\test2\\2.png";/* 解密文件 */String path3 = "F:\\test2\\3.png";File file = new File(path);File file2 = new File(path2);File file3 = new File(path3);/* 文件加密 */
//      Encry(file, file2);/* 文件解密 */Decrypt(file2,file3);}/*** 文件解密* @param f1* @param f2*/private static void Decrypt(File f1, File f2) {FileInputStream fis = null;BufferedInputStream bis = null;int count = 0;FileOutputStream fos = null;BufferedOutputStream bos = null;/* 准备了一个字节数组,将文件读到数组中,读一次,写一次,直到读完 */byte[] b = new byte[size];int len = 0;try {fis = new FileInputStream(f1);bis = new BufferedInputStream(fis);fos = new FileOutputStream(f2);bos = new BufferedOutputStream(fos);while((len = bis.read(b))!=-1){System.out.println(count + "--->" + len + "--->" + Arrays.toString(b));if(len==size) {/* 长度是满的时候就写中间的 */bos.write(b,start,stlen);}else {/* 最后一行全写 */bos.write(b,0,len);}count++;}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}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 f1* @param f2*/private static void Encry(File f1, File f2) {// TODO Auto-generated method stubFileInputStream fis = null;BufferedInputStream bis = null;int count = 0;FileOutputStream fos = null;BufferedOutputStream bos = null;byte[] b = new byte[size];int len = 0;try {fis = new FileInputStream(f1);bis = new BufferedInputStream(fis);fos = new FileOutputStream(f2);bos = new BufferedOutputStream(fos);while ((len = bis.read(b, start, stlen)) != -1) {System.out.println(count + "--->" + len + "--->" + Arrays.toString(b));for (int i = 0; i < start; i++) {Random random = new Random();b[i]= (byte) (random.nextInt(256)-128);}for (int i = len+start+1; i < size; i++) {Random random = new Random();/* 将产生的随机数加到数组中,构成干扰信息 */b[i]= (byte) (random.nextInt(256)-128);}if (len == stlen) {bos.write(b, 0, size);} else {bos.write(b, start, len);}count++;}bos.flush();} catch (IOException e) {e.printStackTrace();} 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();}}}
}

前边的几个参数是我设置的全局变量,有利于修改加密的起始位置.我设置的时字节数组大小100,从20开始,往后面写30个.

用到的主要是java中的io字节流,不懂复制的可以看下我的另一篇文章,里面讲的是如何复制文件或者文件夹.

java简单的文件加密相关推荐

  1. (C语言)简单的文件加密和解密程序

    一个简单的文件加密和解密程序 main.c #include <stdio.h> #include <stdlib.h> #include "fun.h"i ...

  2. Java简单实现DES加密解密算法

    Java简单实现DES加密解密算法 文章目录 Java简单实现DES加密解密算法 DES算法介绍 实现相关java类 代码实现 DES算法介绍 DEC加密算法属于对称加密,即利用指定的密钥,按照密码的 ...

  3. 【密码学】Java课设-文件加密系统(适用于任何文件)

    Java实现文件加密解密 前言 一.密码学入门 1.对称加密 2.非对称加密 二.程序代码 1.welcome类(欢迎界面) 2.Log类(登录界面) 3.Register类(注册界面) 4.Inde ...

  4. Java实现批量文件加密

    一.题目要求: 用Java实现一个文件批量加密解密工具,实现以下功能: 1. 要有图形界面. 2. 能够通过界面设置一个目录,软件对该目录下的所有文件进行加密或解密(使用对称或非对称加密算法). 加密 ...

  5. 基于JAVA的SM4文件加密解密,可以直接使用

    @[JAVA]SM4文件加密以及解密 SM4文件加密 本加密只需要填写一个 key就可以了,需要导入两个包,一个是bcprov-jdk15on-1.59.jar 另一个是hutool-all-4.6. ...

  6. 每日10行代码156:Python实现简单的文件加密解密

    我常用的文件加密解密的工具是宏杰加密,但是前两天打开后发现要强制升级,升级后软件变成vip才能使用,并且不能降级.有一天,我突然想起来自己是不是可以用Python写一个加密的工具.于是就动手开是写了. ...

  7. 小工具分享----Java简单的文字加密解密

    今天有空自己制作了一个jar包,用于实现java中简单的文字加密解密功能,保存可用于以后需要的项目中,再也不用耗时间去网上找资源了,值得收藏!戳这里---------https://download. ...

  8. 利用C++实现简单的文件加密

    示例代码中利用"异或操作"实现对文件加密.首先,建立两个*.txt文件,分别将其命名为"原文件.txt","key.text"," ...

  9. 【java】简单的文件加密解密方式

    一.基础知识 1.异或加密解密方式(推荐) package com.test;import java.io.*;public class test1 {private static final int ...

最新文章

  1. C语言初学者代码中的常见错误与瑕疵(2)
  2. 七问唐骏:真的性格好就能成功?
  3. Hadoop服务器集群安装部署及配置
  4. C++之继承探究(三):继承的方式
  5. PlaySound详解
  6. 未来智慧园区白皮书(2022年) 附下载
  7. mysql离散查询_MySQL多表查询与子查询
  8. 监控系统首选DNS服务器,监控windows DNS服务器
  9. 链塔区块链数据平台周报:新增富豪榜、项目点评、收藏等功能 | 链塔数据
  10. Prometheus实战--Uber背书的存储解决方案M3
  11. ROS2+Qt5 开发问题汇总
  12. 网页内容高度不够时,让footer处于页面底部的方法(不是固定在底部)
  13. arduino uno r3 控制42不进电机+TB6600驱动
  14. unity 检测电脑摄像头_Unity调用PC摄像头
  15. Generative Adversarial Networks overview(3)
  16. UC浏览器新版走新闻路线,酷似今日头条,腾讯模式再现!
  17. 使用vue2开发的移动端项目头部点击按钮显示出来的盒子,盒子里面有element-ui里面的导航栏菜单,点击里面某一个导航栏菜单实现跳转之后显示出来的盒子隐藏
  18. 苹果11触屏不灵敏_苹果11刚买没多久总感觉触摸不灵敏怎么回事?
  19. 基于SSM的物流仓储管理系统(包远程安装配置和代码讲解)
  20. 差分之间,性质多多——差分综合应用学习笔记

热门文章

  1. Unity-Spring Joint 2D组件
  2. substr函数用法详解
  3. oracle 配置账户密码是多少,【ORACLE】oracle数据库用户密码复杂度配置
  4. HTML学生个人网站作业设计:动漫网站设计——海贼王(8页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
  5. 关于亚马逊5665上架报错?具体解决方案奉上!
  6. 专业的出版设计软件 Affinity Publisher for Mac
  7. PHP 接入支付宝公钥证书指南
  8. 跟计算机有关的小游戏,有关计算机动漫与游戏制作专业介绍
  9. 关于Kali修改静态IP地址
  10. BuzzSumo:什么样的文章能获得疯转?(基于1亿篇文章大数据分析)