java 图片加密

java 图片加密首先,了解下异或操作^,对一个数进行两次异或操作得到原数值。publicclassIOTest{ publicstaticvoidmain(String[]args){ inti=3; System.out.println(i^123);//120 System.out.println(i^123^123);//3 }}将一张图片进…

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

首先,了解下异或操作 ^ ,对一个数进行两次异或操作得到原数值。

public class IOTest {

	public static void main(String[] args) {
		
		int i = 3;
		System.out.println(i^123);//120
		System.out.println(i^123^123);//3

	}

}

将一张图片进行拷贝,对其进行加密,其实就是异或操作,

public class Test001 {
	public static void main(String[] args) throws Exception {
		
		FileInputStream in = new FileInputStream("F:\\Picture\\1.jpg");
		FileOutputStream out = new FileOutputStream("F:\\text\\copy.jpg");
		
		BufferedInputStream bin = new BufferedInputStream(in);
		BufferedOutputStream bout = new BufferedOutputStream(out);
		
		int len;
		while((len=bin.read())!=-1){
			bout.write(len^123);
		}
		bout.close();
		bin.close();
		
	}
	
}

效果:
java 图片加密
打开图片报错:
java 图片加密

接下来,对图片进行解密:就是对已经加密的图片,进行拷贝,执行异或操作

public class Test001 {
	public static void main(String[] args) throws Exception {
		
		FileInputStream in = new FileInputStream("F:\\text\\copy.jpg");
		FileOutputStream out = new FileOutputStream("F:\\text\\copy2.jpg");
		
		BufferedInputStream bin = new BufferedInputStream(in);
		BufferedOutputStream bout = new BufferedOutputStream(out);
		
		int len;
		while((len=bin.read())!=-1){
			bout.write(len^123);
		}
		bout.close();
		bin.close();
		
	}
	
}

java 图片加密

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

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

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


相关推荐

  • 官场迷情–横刀灬一笑[通俗易懂]

    官场迷情–横刀灬一笑[通俗易懂]无业游民沈宜修偷瞄上小loli依琳,而他的宅女老婆秋叶却毫不知情。一次偶然的机会,沈宜修见识了美女市长苏静美的风情万种。沈宜修也开始了在依琳、静美和秋叶之间的周旋。此时事业也有所发展的沈宜修,却被美女主编林曼琴给剽窃,想要讨回公…

    2022年6月11日
  • 一步一步写算法(之 A*算法)

    一步一步写算法(之 A*算法)

    2021年12月4日
  • MySQL数据库备份和恢复方案小结[通俗易懂]

    MySQL数据库备份和恢复方案小结[通俗易懂]这两天在调研MySQL数据库的备份和恢复方案,备份对象是对大量Innodb表,或者加上少量的MyISAM表。 InnoDB备份常见问题:文件一致性:数据文件、缓存、日志文件必须保持严格一致。加锁的方法没法保证一致性,因为InnoDB后台刷新数据是异步进行的。数据一致性:不能一次锁住一张表,这个备份的是不同时刻的表数据;如果一次锁住所有表,innodb的mvcc机制会增加undo日志…

    2022年6月6日
  • Activity 跳转详解

    Activity 跳转详解Activity跳转详解你好!我是Graydalf,有可能也叫Gdalf~今天被朋友问到如何设置一个广播来启动一个应用并显示数据,于是将自己了解到的记录下来,有什么较为DEMO的地方希望你能留言告诉我,因为我们都是GitHub嘛~~本节说明:Activity跳转的方式;跳转传值问题(包括非Activity的跳转到Activity);跳转传递值时生命周期回调函数调用情况

    2022年5月22日
  • 【C#】 Convert.ToInt16 、Convert.ToInt32、Convert.ToInt64 区别[通俗易懂]

    【C#】 Convert.ToInt16 、Convert.ToInt32、Convert.ToInt64 区别[通俗易懂]   一般写程序是用的都是Convert.ToInt32,为什么呢?1.Convert.ToInt是数据类型转换成int类型2.   有三种方法toint16,toint32,toint64   int16-数值范围:-32768到32767   int32-数值范围:-2,147,483,648到2,147,483,647   int64…

    2022年9月20日
  • c语言return x_没有return

    c语言return x_没有returnint GetX() const;int 表示函数返回值为复int型;()为空表示该函数不需要参数制;const 表示该函数不修改百任何值;加起来就是:定义一个返回值类型为度 int 参数为void 名为GetX 的常知函数;类的常对象只道能调用这种常成员函数。const修饰知变量的时候,表示该变量是常量,也就是不可以改变的变量。当const放在成员函道数”尾巴”上修饰成员函数时,则…

    2022年8月18日

发表回复

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

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