java 利用异或^进行加密
package com.zcj.eg001; import java.nio.charset.Charset; import org.junit.Test; public class Encryption { public static void main(String[] args) { String pwd = "123456test"; //简易版 test1(pwd); //复杂版 System.out.println(); test2(pwd); } public static void test1(String pwd) { char[] cs = pwd.toCharArray(); for(int i = 0;i<cs.length;i++) { cs[i] = (char)(cs[i]^20000); } String encode = new String(cs); System.out.println("加密后:"+encode); char[] css = new String(cs).toCharArray(); for(int i = 0;i<css.length;i++) { css[i] = (char)(css[i]^20000); } String decode = new String(css); System.out.println("解密后:"+decode); } public static void test2(String pwd) { String enc = encode(pwd); System.out.println("加密后:"+enc); String dec = decode(enc); System.out.println("解密后:"+dec); } private static final String key0 = "FECddfOI()*&<MNCXZPKL"; private static final Charset charset = Charset.forName("UTF-8"); private static byte[] keyBytes = key0.getBytes(charset); public static String encode(String enc){ byte[] b = enc.getBytes(charset); for(int i=0,size=b.length;i<size;i++){ for(byte keyBytes0:keyBytes){ b[i] = (byte) (b[i]^keyBytes0); } } return new String(b); } public static String decode(String dec){ byte[] e = dec.getBytes(charset); byte[] dee = e; for(int i=0,size=e.length;i<size;i++){ for(byte keyBytes0:keyBytes){ e[i] = (byte) (dee[i]^keyBytes0); } } return new String(e); } }
运行后结果如下:
加密后:丑丒专且丕世乔久乓乔
解密后:123456test
加密后:567012pawp
解密后:123456test