【问题标题】:Is there a simple way to hash in Java? [duplicate]有没有一种简单的方法在 Java 中进行散列? [复制]
【发布时间】:2013-08-21 15:37:34
【问题描述】:

我有一些字符串想使用 SHA-256 方式进行散列。我在互联网上看了一点,令我惊讶的是,我找不到一个简单的方法来做到这一点。 我知道MessageDigest 类似乎提供了我需要的一切,除了一件事:像这样的方法:String hash256(String txt) 我也知道有办法做到这一点(例如:here),但我不愿意为可能已经存在的东西写多行。不知道有没有这样的东西?

编辑:看起来我还不够清楚。 JDK中是否存在等效于以下代码的现有方法?

public String hash256(String txt){
    MessageDigest sha = MessageDigest.getInstance("SHA-256");
    sha.update(txt.getBytes());
    byte[] digest = sha.digest();
    return bytesToString(digest);
}

【问题讨论】:

  • 顺便说一句,那个 dup 并不难找到:谷歌“java SHA256”,它是最热门的。不知道您所说的“我搜索了网络”是什么意思:/
  • @Bohemian 正如我所说,我想知道是否有一个 jdk 方法可以将字符串散列到字符串。您提供的示例给了我字节(我知道如何处理它们,但我不想重新编码已经存在的东西)。

标签: java hash


【解决方案1】:

您可以使用 Apache Commons Library 中的 DigestUtils.sha256()

【讨论】:

  • 没有 JDK 等价物吗?
  • 您可以在 Dodd10x 的答案中看到 jdk 等效项。您不妨做一个 FXMUtils 类来编写您想要的方法。
  • 不是我想要的,但我想这是我能得到的最好的,谢谢。
【解决方案2】:
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(stringAsbytes);
stringAsBytes = md.digest();

然后将字节转换为字符串。确保指定字符串编码。

【讨论】:

  • 我的问题的重点是:是否有现有的方法可以做到这一切(而不仅仅是散列到字节)?
  • 我回答的重点是向您展示使用现有 API 做您想做的事情是多么简单。每个问题都没有单一的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
  • 2015-08-27
  • 2017-03-03
  • 2022-01-23
  • 2011-04-16
  • 1970-01-01
  • 2017-11-14
相关资源
最近更新 更多