文章内容
当我们需要在数据库中存储用户的密码时,当然是不能明文存储的。我们就是介绍一下用^运算符来实现简单的密码加密以及解密功能。
一、Java异或运算
异或加解密,只需要执行同一步骤就可以实现解密了。注意:Java异或运算得到的内容为16进制结果,控制台打印为乱码,不影响使用
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 | 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); } |
二、示例
1 2 3 4 5 | public static void main(String[] args) { String str1 = xor( "285123213" , "39490512" ); System.out.println(str1); System.out.println(xor(str1, "39490512" )); } |
注意:因结果为16进制,控制台打印为乱码
控制台输出:
1 2 | 285123213 |
16进制显示效果为:
1 2 | x01x01x01bx02x06x03x03x20 285123213 |