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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++标准库之 Lower_Bound, upper_Bound

    C++标准库之 Lower_Bound, upper_Bound

    2021年11月30日
    44
  • js子页面获取父页面元素_iframe跨域调用父页面方法

    js子页面获取父页面元素_iframe跨域调用父页面方法@{List<Customer>Custs=newList<Customer>();Custs.Add(newCustomer{CustomerCode=”1001″,CustomerName=”Shiv”});Custs.Add(newCustomer{Custome…

    2022年9月1日
    0
  • a 标签去掉下划线[通俗易懂]

    a 标签去掉下划线[通俗易懂]text-decoration:none

    2022年5月2日
    31
  • 超酷汇编教程-- 简明x86汇编语言教程(1)

    超酷汇编教程-- 简明x86汇编语言教程(1)第○章写在前面我不想夸大或者贬低汇编语言。但我想说,汇编语言改变了20世纪的历史。与前辈相比,我们这一代编程人员足够的幸福,因为我们有各式各样的编程语言,我们可以操作键盘、坐在显示器面前,甚至使用鼠标、语音识别。我们可以使用键盘、鼠标来驾驭“个人计算机”,而不是和一群人共享一台使用笨重的继电器、开关去操作的巨型机。相比之下,我们的前辈不得不使用机器语言编写程序,他们甚至没有最简单的汇编程序来

    2022年6月21日
    23
  • Qt获得焦点和失去焦点处理事件 (Focus事件)

    Qt获得焦点和失去焦点处理事件 (Focus事件)方法一:描述:一开始我要实现的目的就是,在一个窗体上有多个可编辑控件(比如QLineEdit、QTextEdit等),当哪个控件获得焦点,哪个控件的背景就高亮用来起提示作用,查了下文档应该用focusInEvent()和focusOutEvent(),在实际过程中,我犯了十分严重的错误,最开始的时候我是这样做的:我重写了窗体QWidget的这两个函数,然后再在函数体中把QFocusEve

    2022年6月15日
    170
  • java语言的特性有什么

    java语言的特性有什么1.java语言是简单的java语言是和c++语言类似的,其次java中丢弃了c++中一些难理解的特性,比如运算符重载等,java语言不使用指针,并且拥有垃圾回收机制2.java语言是面向对象的java语言提供了类、接口和继承等特性,只支持类之间的单继承,但是支持接口之间的多继承,并且支持类与接口之间的实现机制,而且java是全面支持动态绑定的。3.java语言是分布式的jav…

    2022年7月7日
    22

发表回复

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

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