如何在Java中使用sha256散列一些字符串?

问题

如何在Java中使用sha256散列一些字符串?有人知道这个免费图书馆吗?


#1 热门回答(235 赞)

SHA-256不是"编码" - 它是单向散列。

你基本上将字符串转换为字节(例如,使用text.getBytes(StandardCharsets.UTF_8)),然后散列字节。请注意,散列的结果也可能是任意二进制数据,如果要在字符串中表示,则应使用base64或hex ... nottry来使用String(byte[], String)构造函数。

例如

MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(text.getBytes(StandardCharsets.UTF_8));

#2 热门回答(122 赞)

我认为最简单的解决方案是使用Apache Common Codec

String sha256hex = org.apache.commons.codec.digest.DigestUtils.sha256Hex(stringText);

#3 热门回答(83 赞)

另一个替代方案是Guava,它有一个易于使用的套件Hashing实用程序。例如,要使用SHA256作为十六进制字符串来散列字符串,你只需执行以下操作:

final String hashed = Hashing.sha256()
        .hashString("your input", StandardCharsets.UTF_8)
        .toString();