import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class XorExample {
public static final byte XOR_CONST = 0X12;
public static void main(String[] args) throws Exception {
File src = new File("level1.txt");
File dest = new File("level2.txt");
File dest2 = new File("level3.txt");
xorEn(src, dest);
xorEn(dest, dest2);
}
/**
* 異或的一個特點: a^b = c c^b = a
* 所以簡單點,這里的加解密都用一個函數就行了
* @param src
* @param dest
* @throws Exception
*/
public static void xorEn(File src, File dest) throws Exception {
// 文件不存在或為文件夾就不判斷了
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest);
byte[] bs = new byte[1024];
int len = 0;
while ((len = fis.read(bs)) != -1) {
for (int i = 0; i < len; i++) {
bs[i] ^= XOR_CONST;
}
fos.write(bs, 0, len);
}
fos.close();
fis.close();
}
}
㈡ java中異或是怎樣算的
先把i和j的真值轉換為補碼,即:i=0011
0010
,j=0011
1100;然後再進行異或運算(即相異為1)為:0000
1110;再將這個結果轉為原碼輸出,結果為:14