1. 程式人生 > >Base64編碼+兩串異或操作

Base64編碼+兩串異或操作

使用到jar包:commons-codec.jar

/**
 * base64編碼
 * 
 * @param s
 * @param key
 * @return
 */
public static String encode(String s, String key) {
	return base64Encode(xorWithKey(s.getBytes(), key.getBytes()));
}

/**
 * base64解碼
 * 
 * @param s
 * @param key
 * @return
 */
public static String decode(String s, String key) {
	return new String(xorWithKey(base64Decode(s), key.getBytes()));
}

private static byte[] base64Decode(String s) {
	return Base64.decodeBase64(s);
}

private static String base64Encode(byte[] bytes) {
	byte[] encodeBase64 = Base64.encodeBase64(bytes);
	return new String(encodeBase64);
}

/**
 * 兩個字串異或
 * 
 * @param a
 * @param key
 * @return
 */
public static byte[] xorWithKey(byte[] a, byte[] key) {
	byte[] out = new byte[a.length];
	for (int i = 0; i < a.length; i++) {
		out[i] = (byte) (a[i] ^ key[i % key.length]);
	}
	return out;
}