如何在java中实现sha2(password,512)mysql函数

问题描述

我实现了以下逻辑,将用户普通密码编码为 sha512 哈希值。

public static String getSha512Password(String rawPass,String salt){
        String saltedPass = mergePasswordAndSalt(rawPass,salt);

        MessageDigest messageDigest = getMessageDigest();

        byte[] digest;

        try {
            digest = messageDigest.digest(saltedPass.getBytes("UTF-8"));
        } catch (UnsupportedEncodingException e) {
            throw new IllegalStateException("UTF-8 not supported!");
        }

        digest = messageDigest.digest(digest);
        return new String(Hex.encode(digest));
    }
    
    protected final static MessageDigest getMessageDigest() throws IllegalArgumentException {
        try {
            return MessageDigest.getInstance("SHA-512");
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalArgumentException("No such algorithm [" + algorithm + "]");
        }
    }
    
    protected static String mergePasswordAndSalt(String password,String salt) {
        if (password == null) {
            password = "";
        }

        if ((salt == null) || "".equals(salt)) {
            return password;
        } else {
            return password + "{" + salt.toString() + "}";
        }
    }

我也用过MysqL

sha2(密码,512)

函数也可以对用户提供的密码进行编码。

MysqL sha2 函数的返回值和 java getSha512Password 是两个不同的值。。我希望它们相同。

我想知道如何更新java encode方法使返回值与MysqL sha2函数相同。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)