Java中IO流-21-图片加密简单实现

Java中IO流-21-图片加密简单实现     这篇我们利用流来处理图片加密,当然这里没有处理到打开图片,提示输入密码的这么好友好效果。图片加密,也是把一个图片字节读取,然后进行加密运算,最后拷贝成新的图片文件。简单来说,这个过程原理就是,一个数如何被同一个数异或两次,那么结果就等于这个数本身。第一次进行异或就是图片加密过程,给图片每一个字节都进行加密,第二次异或就是解密过程。1.图片加密过程packageio;im…

大家好,又见面了,我是你们的朋友全栈君。

      这篇我们利用流来处理图片加密,当然这里没有处理到打开图片,提示输入密码的这么好友好效果。图片加密,也是把一个图片字节读取,然后进行加密运算,最后拷贝成新的图片文件。简单来说,这个过程原理就是,一个数如何被同一个数异或两次,那么结果就等于这个数本身。第一次进行异或就是图片加密过程,给图片每一个字节都进行加密,第二次异或就是解密过程。

1.图片加密过程

package io;

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

public class Test1 {

	public static void main(String[] args) throws IOException {
		
		FileInputStream fis = new FileInputStream("copy.png");
		FileOutputStream fos = new FileOutputStream("123.png");
		
		int b;
		
		while( (b = fis.read()) != -1) {
			fos.write(b ^ 123);
		}
        
		fis.close();
		fos.close();
	}

}

运行之后,Eclipse中打开图片显示一个X,如果是图片管理器打开就报图片受损,无法正常打开,这个就是加密效果。

 

2.图片解密过程

只需要调整两行代码,把打开失败图片当做流对象进行性读取,然后写入到新图片,新的图片就是解密之后的文件。

package io;

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

public class Test1 {

	public static void main(String[] args) throws IOException {
		
		FileInputStream fis = new FileInputStream("123.png");
		FileOutputStream fos = new FileOutputStream("321.png");
		
		int b;
		
		while( (b = fis.read()) != -1) {
			fos.write(b ^ 123);
		}
        
		fis.close();
		fos.close();
	}

}

图片加密的简单实现就是这样,上面代码里面的异或123,这个123就是秘钥。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL数据库应用与开发答案_MySQL数据库应用与开发习题解答与上机指导

    MySQL数据库应用与开发答案_MySQL数据库应用与开发习题解答与上机指导目录第 1 部分 MySQL 数据库应用与开发 习题参考答案第 1 章 MySQL 数据库概述 1 1 教学要求 1 1 1 基本要求 1 1 2 重点与难点 1 2 习题参考答案第 2 章 MySQL 语言基础 2 1 教学要求 2 1 1 基本要求 2 1 2 重点与难点 2 2 习题参考答案第 3 章 MySQL 数据库的基本操作 3 1 教学要求 3 1 1 基本要求 3 1 2 重点与难点 3 2 习题参考答案第 4 章表及数据完整性 4 1 教学要求 4 1 1 基本要求 4

    2025年6月26日
    3
  • clientwidth innerWidth offsetWidth

    clientwidth innerWidth offsetWidthclientWidth 在任何窗口系统中都是指用户内容能放置的空间clientWidth是每个document一个,一个窗口中可以放置多个document,比如你用frame或iframe就可以放置多个document,这相当于图形界面编程中的MDI(多文档窗口应用,比如Word,Excel就可以同时打开多个文档)。 window.innerWidth能获取…

    2022年7月22日
    11
  • Redis的分布式锁详解

    Redis的分布式锁详解

    2021年4月10日
    169
  • executorservice实例_java controller

    executorservice实例_java controllerExecutorService是Javajava.util.concurrent包的重要组成部分,是JavaJDK提供的框架,用于简化异步模式下任务的执行。一般来说,ExecutorService会自动提供一个线程池和相关API,用于为其分配任务。实例化ExecutorService实例化ExecutorService的方式有两种:一种是工厂方法,另一种是直接创建。Exec…

    2025年10月17日
    9
  • NPS 是什么?[通俗易懂]

    NPS 是什么?[通俗易懂]NPS是NetPromoterScore的缩写。它是一种用来测定顾客对公司忠诚度的工具。NPS值得测定通常用发出NPS调研问卷的方式获得。例如:请问经过这次服务,您向朋友推荐我们服务的意向如何?10分非常想推荐,1分非常不推荐,共10分,请为我们打分,谢谢!根据顾客所反馈的分值,将顾客分为三类。推荐者:10分到9分被动者:8分到7分贬损者:6分到0分顾客能向能向朋

    2022年6月9日
    52
  • 学习PetShop3.0(4)购物车

    学习PetShop3.0(4)购物车终于到购物车了,在看这个之前应该已经明白了第三篇的那个模型,这样购物车基本也就明白了。来看一下ShoppingCart.aspx这个页。当你看好了一个宠物,比如可爱的GoldenRetriever,嘿嘿,那就点addtocart按钮,这时就会跳到ShoppingCart.aspx,url里带了这个宠物的id号,根据该id号程序将该宠物放到cart里面。然后你可以再去挑别的宠物,比如一只猫(……

    2022年10月16日
    3

发表回复

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

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