加密
使用场景解析
在我们进行密码存储时不可能直接将明文进行存储,这样一旦数据库被盗取,就可能造成不必要的损失
常用加密方式:
1,异或加密
最普通的加密方式就是使用异或的方式将异或完的字符串存入到数据库中。首先要将字符串转换成数组,再将数组的每一位异或。
代码:
char[] cs = pwd.toCharArray();
System.out.print("输入的密码:");
System.out.println(cs);
for (int i = 0; i < cs.length; i++) {
cs[i] = (char) (cs[i]^3);
}
System.out.print("异或加密后的密码:");
System.out.println(cs);
运行结果:
2,BASE64加密
BASE64是jdk自带的一种方法,与异或相同,都可以转换回来,是一种可逆的加密方法
注意此BASE64是com.sun.org.apache.xerces.internal.impl.dv.util中的;
String encode = Base64.encode(pwd.getBytes());
System.out.print("BASE64加密后的密码:");
System.out.println(encode);
//BASE64是一种可逆的加密方式
byte[] decode = Base64.decode(encode);
System.out.print("BASE64加密后的密码:");
System.out.println(new String(decode));
运行结果:
3,SHA加密
SHA加密需要导入外部jar包 commons-codec-1.2.jar 并且要注意SHA是不可逆的
具体代码:
Scanner scanner = new Scanner(System.in);
System.out.print("请输入密码:");
String pwd = scanner.nextLine();
String encode = DigestUtils.shaHex(pwd);
System.out.print("SHA64加密后的密码:");
System.out.println(encode);
运行结果:
4,MD5加密
MD5加密与SHA加密相似,只不过内部代码不同,同样需要导入jar包,也同样是不可逆的
代码如下:
Scanner scanner = new Scanner(System.in);
System.out.print("请输入密码:");
String pwd = scanner.nextLine();
String encode = DigestUtils.md5Hex(pwd);
System.out.print("MD5加密后的密码:");
System.out.println(encode);
运行结果:
5,总结
我们可以采用任何方法对密码进行加密存储,所有项目中的密码也都是使用加密存储的,这几种方法中用的最多的就是MD5和SHA加密,因为这两种加密不可逆,也就代表着不容易被破解。MD5相对来说速度快,SHA相对来说安全。