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

新手上路,请多包涵

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

原文由 stack man 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 639
2 个回答

您可以将其用于 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;
}

原文由 A. Sinha 发布,翻译遵循 CC BY-SA 4.0 许可协议

请停止使用散列函数对密码进行编码!它们不提供您需要的保护。相反,您应该使用 PBKDF2、bcrypt 或 scrypt 等算法。

参考:

原文由 TheGreatContini 发布,翻译遵循 CC BY-SA 3.0 许可协议

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