39、文件的加密

39、文件的加密

简单文件加密

通过输入流将文件读取到内存里面之后,可以对这些数据做一些处理,之后再将数据写出到硬盘里面从而达到加密的效果。

package com.sutaoyu.IO;

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 IO_test_4 {
    public static void main(String args) {
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        
        try {
            bis = new BufferedInputStream(new FileInputStream("BUffer缓冲.png"));
            bos = new BufferedOutputStream(new FileOutputStream("new.png"));
            int temp;
            while((temp = bis.read()) != -1) {
                 // 数据异或一个数字进行加密
                bos.write(temp^88);
            }
        }
        catch(FileNotFoundException e) {
            e.printStackTrace();
        }catch(IOException e) {
            e.printStackTrace();
        }
    }
}

文件解密

上面的加密操作就是在写出数据之前对数据进行异或操作,利用对一个数进行两次异或的结果就是他本身这个特点,将待解密的图片读取到内存里面,然后再进行异或操作写出即可。

package com.sutaoyu.IO;

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 IO_test_5 {
    public static void main(String args) {
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        
        try {
            bis = new BufferedInputStream(new FileInputStream("new.png"));
            bos = new BufferedOutputStream(new FileOutputStream("code.png"));
            int temp;
            while((temp = bis.read()) != -1) {
                 // 数据异或一个数字进行加密
                bos.write(temp^88);
            }
        }
        catch(FileNotFoundException e) {
            e.printStackTrace();
        }catch(IOException e) {
            e.printStackTrace();
        }    
    }
}

 

转载于:https://www.cnblogs.com/zhuifeng-mayi/p/10142953.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101247.html原文链接:https://javaforall.net

(0)
上一篇 2021年6月18日 下午7:00
下一篇 2021年6月18日 下午8:00


相关推荐

  • Java如何快速入门?

    Java如何快速入门?转自:微点阅读https://www.weidianyuedu.com一、掌握静态方法和属性静态方法和属性用于描述某一类对象群体的特征,而不是单个对象的特征。Java中大量应用了静态方法和属性,这是一个通常的技巧。但是这种技巧在很多语言中不被频繁地使用。理解静态方法和属性对于理解类与对象的关系是十分有帮助的,在大量的Java规范中,静态方法和属性被频繁使用。因此学习者应该理解静态方法和属性。Java在方法和属性的调用上是一致的,区别只表现在声明的时候,这和c++是不同的。二、重视接口..

    2022年6月1日
    40
  • cursor 使用经验分享

    cursor 使用经验分享

    2026年3月16日
    3
  • java使用siger 获取服务器硬件信息

    java使用siger 获取服务器硬件信息url http www cnblogs com jifeng archive 2012 05 16 2503519 html url url http lbyzx123 iteye com blog 1074371 url url http www ibm com developerwor cn java j lo springsecuri url

    2026年3月19日
    2
  • PHP 垃圾回收机制详解

    PHP 垃圾回收机制详解

    2022年2月14日
    50
  • 小白也会,Windows 上安装OpenClaw(文)

    小白也会,Windows 上安装OpenClaw(文)

    2026年3月13日
    3
  • TXS0104E电平转换工作原理_电平指示芯片

    TXS0104E电平转换工作原理_电平指示芯片TXB0304作为新一代自动识别方向的电平转换芯片,跟上一代同类器件TXB0104相比,具有更低的工作电压(0.9V)、更高的转换速率(1.8V-3.3V间电平转换时最高速率140MBPS)、以及更小的封装等优势。也正是因为需要在较低工作电压时也能达到较高的转换速率,芯片在某些关键参数设计上,也跟上一代产品有所不同,比如ONE-SHOT输出电路的MOS管内阻必须要设计得更小一些。这就要求在某些特殊情况下应用时(比如输出PCB走线较长),需要额外留意电路原理图的设计和PCB布线设计,以减轻输出过冲和震荡的现象

    2022年8月10日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号