gistfile1.txt //向数据库存入密文和盐值public static String[] parsePassToMd5(String password) { //定义两个存字符串的数组String[] result = new String[2]; //获取一个长度为的随机字符串String salt = getRandomSt
//向数据库存入密文和盐值 public static String[] parsePassToMd5(String password) { //定义两个存字符串的数组 String[] result = new String[2]; //获取一个长度为的随机字符串 String salt = getRandomString(8); // password和salt弄到一起 String lainText = password + salt; //对这个字符串进行md5加密 result[0] = parseStrToMd5L32(lainText); //把盐值存入数组中 result[1] = salt; return result; } //返回加密后的密文 public static String parseStrToMd5L32(String lainText) { System.out.println(lainText); String resultStr = null; try { //jdk内部提供的一个加密类,选择进行加密的算法 MessageDigest md5 = MessageDigest.getInstance("MD5"); //加密的方法 byte[] bytes = md5.digest(lainText.getBytes()); //把密文转成字符串 StringBuffer stringBuffer = new StringBuffer(); for (int i = 0; i < bytes.length; i++) { int bt = bytes[i] & 0xff; if (bt < 16) { stringBuffer.append(0); } stringBuffer.append(Integer.toHexString(bt)); } resultStr = stringBuffer.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return resultStr; } //进行密码比较,因为存入数据库中的password字段的值,你无法重新解析成功为密码 //输入的密码,和从数据库中的salt取出来,进行加密后,再比较 public static boolean comparePass(String pass,String salt,String md5Pass) { boolean bool = false; String lainText = pass+salt; if(parseStrToMd5L32(lainText).equals(md5Pass)){ bool = true; } return bool; }