本帖最后由 张頔 于 2012-7-29 08:35 编辑
import java.io.*;
class CopyPic
{
public static void main(String[] args) throws Exception
{
int key = 3;
FileOutputStream fos = null;
FileOutputStream fos2 = null;
FileInputStream fis = null;
try
{
fos = new FileOutputStream("c:\\2.jpg");//这个是进行完两次异或,相当于接收端解密的 如图1
fos2 = new FileOutputStream("c:\\3.jpg");//这个是进行完一次异或,相当于发送前的加密完的 如图2
fis = new FileInputStream("c:\\1.jpg");
byte[] buf = new byte[1024];
int len = 0;
while((len=fis.read(buf))!=-1)
{
for (int i = 0; i < len; i++) {
buf ^=key ;//每一个字符都进行异或
}
fos2.write(buf,0,len);
fos2.flush();
for (int i = 0; i < len; i++) {
buf ^=key ;//同样是每一个字符都进行异或
}
fos.write(buf,0,len);
fos.flush();
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
if(fis!=null)
fis.close();
}
catch (IOException e)
{
throw new RuntimeException("读取关闭失败");
}
try
{
if(fos!=null)
fos.close();
}
catch (IOException e)
{
throw new RuntimeException("写入关闭失败");
}
try
{
if(fos2!=null)
fos2.close();
}
catch (IOException e)
{
throw new RuntimeException("写入关闭失败");
}
}
}
}
|
-
原图.jpg
(109.97 KB, 下载次数: 73)
原先的图片的二进制形式
-
1.jpg
(103.87 KB, 下载次数: 75)
第二次异或后的二进制形式
-
2.jpg
(155.47 KB, 下载次数: 69)
第一次异或后的二进制形式
|