Java异或加密解密

当我们需要在数据库中存储用户的密码时,当然是不能明文存储的。我们就是介绍一下用^运算符来实现简单的密码加密以及解密功能。

一、Java异或运算

异或加解密,只需要执行同一步骤就可以实现解密了。注意:Java异或运算得到的内容为16进制结果,控制台打印为乱码,不影响使用

public static String xor(String data, String key) {
    StringBuilder sb = new StringBuilder();

    if (isNotEmpty(data) && isNotEmpty(key)) {
        for (int i = 0; i < data.length(); i++) {
            char c = data.charAt(i);
            char k = key.charAt(i % key.length());
            char ch = (char) (c ^ k);
            sb.append(ch);
        }
    }

    return sb.toString();
}

public static boolean isNotEmpty(String str) {
    return !isEmpty(str);
}

二、示例

public static void main(String[] args) {
    String str1 = xor("285123213", "39490512");
    System.out.println(str1);
    System.out.println(xor(str1, "39490512"));
}

注意:因结果为16进制,控制台打印为乱码

控制台输出:

 
285123213

16进制显示效果为:

x01x01x01bx02x06x03x03x20
285123213

发表评论