标准的加解密算法消耗较多的计算资源,于是自己写了个简单的。适用于加密场景不严格的情况下。
思想:字符串->byte[]->对每个byte按位亦或。
代码示例:
import java.util.Arrays;
/**
* a tricky encrypt method.
* Used for only English letter.
*/
public class StringEncrypt {
public static void main(String[] args) {
StringEncrypt o = new StringEncrypt();
System.out.println("plain text:hello");
String afterEncode = o.encode("hello");
System.out.println("after encode:"+afterEncode);
String afterDecode = o.decode(afterEncode);
System.out.println("afterDecode:"+afterDecode);
}
/**
*
* @param str
* non-Chinese word
* @return such as [123, 34, 102, 97, 105, 108, 101]
*/
public String encode(String str) {
byte[] byteArr = str.getBytes();
for (int i = 0; i < byteArr.length; i++)
byteArr[i] = (byte) (byteArr[i] ^ 10);
return Arrays.toString(byteArr);
}
/**
*
* @param str
* such as [123, 34, 102, 97, 105, 108, 101]
* @return plain text
*/
public String decode(String str) {
// remove brackets
str = str.substring(1, str.length() - 1);
String[] strArr = str.split(",");
byte[] byteArr = new byte[strArr.length];
for (int i = 0; i < strArr.length; i++)
byteArr[i] = (byte) (Byte.valueOf(strArr[i].trim()) ^ 10);
return new String(byteArr);
}
}
/*
plain text:hello
after encode:[98, 111, 102, 102, 101]
afterDecode:hello
*/