本篇博客是关于直接复制图片,加密复制图片和解密被加密的图片。
一、直接复制图片
这个话不多说直接上代码:
package chapter10;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class PictureCopy {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try{
fis = new FileInputStream("D:\\picture.jpg");
fos = new FileOutputStream("D:\\picture3.jpg");
byte[] buffer = new byte[20];
int len;
while((len = fis.read(buffer))!=-1){
fos.write(buffer,0,len);
}
}
catch (IOException e){
e.printStackTrace();
}
finally {
if(fos!=null){
try{
fos.close();
}
catch (IOException e){
e.printStackTrace();
}
}
if(fis!=null){
try{
fis.close();
}
catch (IOException e){
e.printStackTrace();
}
}
}
}
}
这个是直接运行就会复制原来图片(可以直接查看,没有被加密)。
二、加密复制图片
接下来这个代码是属于加密复制代码,也就是说不能够直接查看,即使去本地查看也不行。
package chapter10;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class PictureCopyEncryption {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try{
fis = new FileInputStream("D:\\picture.jpg");
fos = new FileOutputStream("D:\\picture3.jpg");
byte[] buffer = new byte[20];
int len;
while((len = fis.read(buffer))!=-1){
for(int i=0;i<len;i++){
buffer[i] = (byte)(buffer[i]^5);
}
fos.write(buffer,0,len);
}
}
catch (IOException e){
e.printStackTrace();
}
finally {
if(fos!=null){
try{
fos.close();
}
catch (IOException e){
e.printStackTrace();
}
}
if(fis!=null){
try{
fis.close();
}
catch (IOException e){
e.printStackTrace();
}
}
}
}
}
说明:假如m = 10 ,n = 5,那么m ^ n ^ n = m,所以此时我们想对加密图片进行解密,只需要将刚刚加密的图片再 ^ 5 即可解密图片,解释:原图片 ^ 5 ^ 5 = 原图片(其中 原图片 ^ 5=加密图片)
三、将加密图片进行解密
接下来这个代码是将上面加密那个图片进行解密,然后就可以查看解密后的图片了:
package chapter10;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class PictureCopyDecode {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try{
File encryption = new File("D:\\picture1.jpg");
File decode = new File("D:\\picture2.jpg");
fis = new FileInputStream(encryption);
fos = new FileOutputStream(decode);
byte[] buffer = new byte[20];
int len;
while((len = fis.read(buffer))!=-1){
for(int i=0;i<len;i++){
buffer[i] = (byte)(buffer[i]^5);
}
fos.write(buffer,0,len);
}
}
catch (IOException e){
e.printStackTrace();
}
finally {
if(fos!=null){
try{
fos.close();
}
catch (IOException e){
e.printStackTrace();
}
}
if(fis!=null){
try{
fis.close();
}
catch (IOException e){
e.printStackTrace();
}
}
}
}
}