如何在Java中使用SHA-512散列密码?

2022-09-01 01:16:33

我一直在研究一些关于Java字符串加密技术的信息,不幸的是,我还没有找到任何好的教程,如何在Java中使用SHA-512对字符串进行哈希处理;我读了一些关于MD5和Base64的博客,但它们并不像我想要的那么安全(实际上,Base64不是一种加密技术),所以我更喜欢SHA-512。


答案 1

您可以将它用于SHA-512(不是密码哈希的好选择)。

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public String get_SHA_512_SecurePassword(String passwordToHash, String salt){
    String generatedPassword = null;
    try {
        MessageDigest md = MessageDigest.getInstance("SHA-512");
        md.update(salt.getBytes(StandardCharsets.UTF_8));
        byte[] bytes = md.digest(passwordToHash.getBytes(StandardCharsets.UTF_8));
        StringBuilder sb = new StringBuilder();
        for(int i=0; i< bytes.length ;i++){
            sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
        }
        generatedPassword = sb.toString();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return generatedPassword;
}