java怎么去判断md5加密的密码啊?

if(!password.equals(result.getString("password"))){
                throw new PasswordException("密码错误");
            }

密码是123456
但是数据库里是已经md5加密后的字符了

表单传过来的是明文123456
现在是抛出异常“密码错误”
要怎么进行MD5判断才正确?

阅读 5k
2 个回答

把传过来的明文先加密,然后再和数据库中的密码做比较

对两次的加密字符进行比较,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();
        }

    }
}

MD5加密

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题