java - 获取字符串的哈希值作为字符串

标签 java

我在这里:

    String password = "123";
    byte passwordByte[] = password.getBytes();
    MessageDigest md = MessageDigest.getInstance("SHA-512");
    byte passwortHashByte[] = md.digest(passwordByte);

passwortHashByte-Array 仅包含很多数字。我想将这个数字转换为一个包含明文哈希码的字符串。 我如何做到这一点?

最佳答案

I want to convernt this numbers to one String which contains the hash-code as plaintext.

哈希不是纯文本。它是二进制数据——任意字节。这不是纯文本,就像 MP3 文件一样。

您需要确定要使用哪种文本表示形式来表示二进制数据。这又取决于您想要使用这些数据做什么。为了便于诊断,我建议使用纯 ASCII 表示 - 可能是 base64 或十六进制。如果您需要轻松查看各个字节,则十六进制更容易读取,但 base64 更紧凑。

还需要注意的是,MD5 并不是一种特别好的散列密码的方法……而且看起来您甚至没有对它们进行加盐处理。对于永远不会发布到外界的演示应用程序来说,这可能已经足够好了,但您确实应该研究更安全的方法。请参阅Jeff Atwood's blog post on the topic进行介绍,最好找到一本有关编写安全代码的书。

关于java - 获取字符串的哈希值作为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20765118/

相关文章:

java - Closeable 和 AutoCloseable close() 方法的执行顺序

java - 在 Java 中进行对象到对象转换的简单/优雅的方法?

java - Eclipse&Maven - 导入org.hibernate.boot.无法解析

java - 预定 Spring 方法中的昂贵操作

java - 生成对象的所有设置/获取

java - 如何在Jframe中分离Jpanel

java - 如何获取服务请求的 JBoss EAP 7 实例的实例名称 (instance-id)

java - Android 无法连接到套接字服务器(java)

java - ArrayList add(index, object) 与 add(object) 复杂性

java - 如何获得波斯语地址