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;
}
