利用java程序实现文件加密

2023-10-27

我们的文件在计算机中都是以二进制的形式存储,而Java中IO流(字节流和字符流)可以实现对底层文件的读取,故利用Java的IO流进行文件拷贝时,可以对底层二进制进行加密操作,随后通过解密操可以还原。

例如,我们对桌面上的一段avi视频文件进行加密操作,首先利用字节流对avi文件进行读取(read()函数),该函数每次读取一个字节(8位),并返回0~255内的字节值,我们通过将每次读取的字节值加1进行加密操作,这样拷贝的文件就实现了加密。随后我们可以对加密后的文件进行减1,实现解密操作。

package demo;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class IOSercet {
	public static void main(String[] args) throws IOException {
		decrypt("C:\\Users\\Dell\\Desktop\\原视频.avi");
	}
	
	//加密
	public static void secret(String str) throws IOException{
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(str));
		String [] s=str.split("\\.");
		BufferedOutputStream bos = new BufferedOutputStream(new 
              FileOutputStream("C:\\Users\\Dell\\Desktop\\marden1."+s[1]));
		int n;
		long a=System.currentTimeMillis();
		while((n=bis.read())!=-1){
			bos.write(n+1);
		}
		long b=System.currentTimeMillis();
		bis.close();
		bos.close();
		System.out.println("加密拷贝成功!");
		System.out.println("加密用时:"+(b-a)+"ms");
	}
	



    //解密
	public static void decrypt(String str) throws IOException{
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(str));
		String [] s=str.split("\\.");
		BufferedOutputStream bos = new BufferedOutputStream(new 
                     FileOutputStream("C:\\Users\\Dell\\Desktop\\marden2."+s[1]));
		int n;
		long a=System.currentTimeMillis();
		while((n=bis.read())!=-1){
			bos.write(n-1);
		}
		long b=System.currentTimeMillis();
		bis.close();
		bos.close();
		System.out.println("解密拷贝成功!");
		System.out.println("解密用时:"+(b-a)+"ms");
	}
}



通过上述加密算法,我们得到加密后的视频文件marden1.avi。并且用potplayer播放器进行测试,效果图下图所示:

通过上述解密算法,我们得到解密后的视频marden2.avi。并且用potplayer播放器进行测试,最后运行结果完美。

即通过复制视频文件时,将获取的每个字节的数据进行加1和减1操作后,可以实现加密和解密。

 

 

同理,我们利用上述加密解密算法进行文本的测试。加密后的文本显示为乱码,效果图下图所示:

通过解密算法得到解密后的文本,效果如下图所示:

哈哈哈~~~利用上面的小技巧可以对百度云中的文件进行自定义加密~~再也不怕百度云爸爸把我的宝贵资源和谐掉了~~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用java程序实现文件加密 的相关文章

  • blender动画全面学习教程

    大小解压后 31 8G 时长28小时 包含项目文件 1920X1080 MP4 语言 英语 中英文字幕 根据原英文字幕机译更准确 Gumroad 活着 Blender中的动画课程 云桥网络 平台获取课程 信息 Alive 是迄今为止发布的最
  • Python import Queue ImportError: No module named 'Queue'

    python3 中引入Queue 会报出这个问题 python3 中这样引入 import queue python2 中这样引入 import Queue 为了兼容 可以这样 import sys if sys version gt 3
  • 机器学习-线性回归-多维度特征变量

    1 假设函数 之前的几篇文章里面 我们都只是介绍了单维特征变量的线性回归模型 比如预测房价的时候 我们只用了房子的面积这个维度 接下来我们会去研究多个维度的线性回归模型 还是从预测房价这个例子入手 假设我们现在不只是单纯的考虑房子的面积 还
  • verilog 简单分频程序

    偶数分频 最简单二分频 在输入时钟上升沿翻转即可 N分频 N为偶数 计数器计数到N 2 1翻转 如进行4分频 count 4 2 1 1时翻转 6分频计数器计到2 翻转 程序如下 经过实测验证 正确 时序如图 可以看出 从36到42是一个周
  • 西瓜书 第一章 绪论

    1 1 引言 理解机器学习 人类的 经验 对应计算机中的 数据 让计算机来学习这些经验数据 生成一个算法模型 在面对新的情况中 计算机便能作出有效的判断 这便是机器学习 1 2 基本术语 假设我们收集了一批西瓜的数据 例如 色泽 青绿 根蒂
  • linux下只读文件的修改方法

    命令前面加sudo 是以管理员方式打开
  • vue+flask实现视频目标检测yolov5

    开始做这个之前 了解一些vue的基础 然后对flask完全不知道 所以特别感谢很多博主的文章 主要参考的是这篇文章 在WEB端部署YOLOv5目标检测 Flask VUE 博主在GitHub上详细的代码给我一个很好的参考 他采用的是前后端分

随机推荐

  • latex公式自动换行与不自动换行的实现

    例如在双栏中 行内公式太长 就会溢出 很难看 公式中的元素 默认 有些是能自动换行 有些是不能的 例如 内的东西就不能自动换行了 如果是运算符 就能自动换行 可以参考下面这个博客讲的 Latex中行内公式如果在该行不能显示完整则会自动从下一
  • 安装了多个java 如何切换java版本

    安装了多个java 如何切换java版本 问题描述 平常用的是java8 最近在学习java的新特性 这就需要从java8往更高的java版本切换 由于还在使用java8 测试完新特性后我需要再切换回java8 如何切换 安装java的时候
  • JAVA,同级包下的类引用不需要import

    类ServiceResponse 的属性含有同级包下的属性类型为EServiceResPonseStatus类型的变量 此时并没有import引入 而只需要类EServiceResPonseStatus存在即可 如果EServiceResP
  • 连续整数检测法原理C语言,最大公约数的三种算法(欧几里得递归算法、连续整数检测算法、公共质因数相乘算法)...

    最大公约数的算法在编程中是比较典型的 常见的有三种 按效率高低分别为 欧几里得递归算法 连续整数检测算法 公共质因数相乘算法 如下 1 欧几里得递归算法 第一步 如果n 0 返回m值作为结果 同时过程结束 否则进入第二步 第二步 m除以n
  • Dubbo——快速启动(2)

    快速启动 Dubbo 采用全 Spring 配置方式 透明化接入应用 对应用没有任何 API 侵入 只需用 Spring 加载 Dubbo 的配置即可 Dubbo 基于 Spring 的 Schema 扩展 进行加载 mvn
  • Spring Boot创建定时任务(并实现动态参数传递执行)

    关于Spring Boot创建定时任务非常简单 有两种方式进行创建 第一种注解方式 静态参数 使用 Scheduled 进行创建定时任务 仅仅几行代码就可以完成 而且支持灵活的参数表达式cron 还有支持简单的延时操作 例如 fixedDe
  • springboot实现小程序订阅消息推送

    1 拿到用户的openid 2 获取access token 3 调用小程序消息推送的接口 一 获取用户的openid 关于openid的获取百度一大堆方法 有兴趣的可以去查看一下 此处不在赘述 二 获取access token 关于acc
  • 【WSL2】WSL2+Win11 Python内使用ST-link & ST-Link/USB链接至WSL2

    WSL2 WSL2 Win11 Python内使用ST link ST Link USB连接至WSL2 pyswd 库配置和 libusb 安装 WSL2连接至USB Device 备注 起由是准备使用pyswd这个库 实现利用Python
  • ASN.1简介

    1 ASN 1 定义 不同系统之间通信需要面对的一个基本问题是数据从发送端到接收端的高效转换 在 OSI 开发式系统互联参考模型 参考模型 为了方便数据传输 数据类型和数据结构都表现为应用层的一个函数接口 在表示层完成数据到规定地可传输的二
  • source insight修改字符编码

    source insight这款软件是一款功能非常实用的代码编辑 浏览工具 我们可以通过这款软件编辑代码 也可以用来浏览阅读一些代码文件 不过很多用户在使用这款软件的时候都遇到过大大小小的问题 出现乱码就是比较常见的一个问题 出现乱码的情况
  • MySQL数据库张素青答案_MySQL数据库技术与应用

    章数据库基础1 1 1数据库的基本概念2 1 2常见的数据库4 1 3数据管理技术的发展5 1 3 1人工管理阶段6 1 3 2文件系统阶段6 1 3 3数据库系统阶段7 1 4数据模型8 1 4 1数据模型的概念8 1 4 2数据模型的分
  • linux oprofile解析

    linux oprofile解析 oprofile利用cpu硬件层面提供的性能计数器 performance counter 通过计数采样 帮助我们从进程 函数 代码层面找出占用cpu的 罪魁祸首 下面我们通过实例 了解oprofile的具
  • 区块链-公钥私钥签名、验签、加密、解密过程

    目录 公钥 与 私钥 加密与解密 设定 加密过程 解密过程 数字签名 验签 设定 签名过程 验签过程 公钥 与 私钥 比特币采用了ECDSA数字签名算法 是一种非对称的加密方法 非对称加密的秘钥是成对出现的 即公钥与私钥 公钥 公之于众 用
  • 3 FPGA时序约束理论篇之IO约束

    I O约束 I O约束是必须要用的约束 又包括管脚约束和延迟约束 管脚约束 管脚约束就是指管脚分配 我们要指定管脚的PACKAGE PIN和IOSTANDARD两个属性的值 前者指定了管脚的位置 后者指定了管脚对应的电平标准 在vivado
  • 【目标检测算法实现之yolov5】 一、YOLOv5环境配置,将yolov5部署到远程服务器上

    文章目录 一 下载Yolov5代码 二 利用winscp将下载好的yolov5 master zip压缩包传到服务器上 三 配置环境 远程服务器端 1 安装miniconda 2 创建虚拟环境 3 配置yolov5需要的环境 激活虚拟环境
  • 京淘项目后端完整发布

    1 集群部署 1 1集群部署流程图 部署集群 说明 分别准备3台tomcat服务器 端口号分别为8091 8092 8093 启动多个进程 说明 勾选其中的选项 可以平行运行多个进程 部署集群 配置后端代理 server listen 80
  • 多维时序

    多维时序 Matlab实现GRU Adaboost和GRU多变量时间序列预测对比 目录 多维时序 Matlab实现GRU Adaboost和GRU多变量时间序列预测对比 预测效果 基本介绍 模型描述 程序设计 参考资料 预测效果 基本介绍
  • < 数据结构 > 堆的实现

    目录 1 前言 堆的概念 堆的结构 2 堆的实现 2 1 准备工作 创建堆结构 初始化堆 堆的打印 堆的销毁 2 2 堆调整 堆的交换 堆向上调整算法 堆向下调整算法 2 3 核心功能 堆的插入 堆的删除 堆的判空 获取堆的元素个数 获取堆
  • 小张的qt学习笔记:实时显示系统日期,时间,月份和星期,年月日

    可怜的小张今天为了做项目一夜没睡 首先 在ui中拖一个Label到主界面中 命名为label 在 h文件中加入 include
  • 利用java程序实现文件加密

    我们的文件在计算机中都是以二进制的形式存储 而Java中IO流 字节流和字符流 可以实现对底层文件的读取 故利用Java的IO流进行文件拷贝时 可以对底层二进制进行加密操作 随后通过解密操可以还原 例如 我们对桌面上的一段avi视频文件进行