if(!password.equals(result.getString("password"))){
throw new PasswordException("密码错误");
}
密码是123456
但是数据库里是已经md5加密后的字符了
表单传过来的是明文123456
现在是抛出异常“密码错误”
要怎么进行MD5判断才正确?
if(!password.equals(result.getString("password"))){
throw new PasswordException("密码错误");
}
密码是123456
但是数据库里是已经md5加密后的字符了
表单传过来的是明文123456
现在是抛出异常“密码错误”
要怎么进行MD5判断才正确?
对两次的加密字符进行比较,MD5加密的结果是一样的,所以每次进行加密后的密文进行匹配比较。
java代码加密
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Utils {
public static void main(String[] args) {
String passWord = "123456";
StringBuilder sb = new StringBuilder();
//获取数据摘要器
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
//将一个byte数组进行加密操作,返回的是一个加密的byte数组,二进制的哈西计算,md5加密的第一步
byte[] digest = messageDigest.digest(passWord.getBytes());
for (int i = 0; i < digest.length; i++) {
int result = digest[i] & 0xff;
//将得到的int类型的值转化为16进制的值
String hexString = Integer.toHexString(result);
if (hexString.length()<2){//系统会自动把0省略,所以添加0
sb.append("0");
}
sb.append(hexString);
}
System.out.println(sb.toString());
} catch (NoSuchAlgorithmException e) {//找不到加密方式异常
e.printStackTrace();
}
}
}
10 回答11.1k 阅读
15 回答8.4k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
8 回答6.2k 阅读
2 回答2.6k 阅读✓ 已解决
把传过来的明文先加密,然后再和数据库中的密码做比较