md5算法
不可逆的:原文--》密文、用系统的API可以实现;
123456 ---密文
1987 ----密文;
算法步骤:
- 1、用每个byte去和11111111做与运算并且得到的是int类型的值:
byte & 11111111;
- 2、把int 类型转成 16进制并返回String类型;
- 3、不满八个二进制位就补全;
1 public static void main(String[] args) throws NoSuchAlgorithmException { 2 3 MessageDigest digest = MessageDigest.getInstance("md5"); 4 5 String password = "123456"; 9 byte [] result = digest.digest(password.getBytes()); 10 11 StringBuffer buffer = new StringBuffer(); 12 13 for(byte b : result){ 15 //0xff是十六进制,十进制为255 19 int nuber = b & 0xff; 21 String str = Integer.toHexString(nuber); 23 if(str.length()==1){ 25 buffer.append("0"); 27 } 29 buffer.append(str); 33 } 35 //这就是MD5加密得到的值 37 System.out.println(buffer); 38 39 }
会抛出没有事先准备的算法异常NoSuchAlgorithmException;
- 4、网站验证算法是否正确(www.cmd5.com)、加密再加密再演示
- 5、密码加盐,即byte相与的数不上标准的oxff,我们进行修改为oxfff或其他的
- 6、银行密码保存是进行了15~30次重复加密,破解非常复杂,不用担心安全性