当前位置: 首页 > 知识库问答 >
问题:

在Java中创建Base64编码的SHA-256哈希[已关闭]

师野
2023-03-14

想要改进此问题?更新问题,以便它仅通过编辑这篇文章来关注一个问题。

我们需要读取文件内容并将其转换为SHA256,然后将其转换为Base64。

任何指针或示例代码都足够了,因为我是这个加密机制的新手。

提前谢谢。

共有2个答案

傅越
2023-03-14

您可以使用< code>MessageDigest转换为SHA256,使用< code>Base64将其转换为Base64:

public static String encode(final String clearText) throws NoSuchAlgorithmException {
    return new String(
            Base64.getEncoder().encode(MessageDigest.getInstance("SHA-256").digest(clearText.getBytes(StandardCharsets.UTF_8))));
}
王建华
2023-03-14

使用Java 8:

public static String fileSha256ToBase64(File file) throws NoSuchAlgorithmException, IOException {
    byte[] data = Files.readAllBytes(file.toPath());
    MessageDigest digester = MessageDigest.getInstance("SHA-256");
    digester.update(data);
    return Base64.getEncoder().encodeToString(digester.digest());
}

顺便说一句:SHA256不是加密,而是散列。散列不需要密钥,加密需要。加密可以反转(使用密钥),散列不能。维基百科上的更多信息:https://en.wikipedia.org/wiki/Hash_function

 类似资料:
  • 我正在尝试使用亚马逊的弹性代码转换器。这里我需要sha-256散列一个字符串;http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html 我已经尝试了我在网上找到的任何方法,但我找不到与页面和一些在线哈希网站提供的相同的结果。 下面是要散列的字符串,您可以从上面的链接中找到; 以下是预期结果: 3

  • 我已经在诺基亚开发者论坛上发布了这个问题,所以请原谅我。 我正在编写一个应用程序,它需要查找一个URL的SHA-256哈希,该URL以唯一的值键控,即。在Java ME/J2ME中最好的方法是什么?

  • 因此,我试图找出如何在ios上进行hmacshad256哈希,因为这是我为wcf服务api所做的哈希。我一直试图寻找一些关于它的信息,但通常只是最终得到一个SHA-256哈希。

  • 现在我可以成功登录了。 现在,我如何以编程方式(在Java中)生成SHA-256哈希密码插入数据库?我见过许多生成SHA-256散列和将字节字符串转换为十六进制的示例。但是在使用摘要工具时,让我感到困惑的部分是散列的开始。它总是以“$”开头生成哈希值。当以编程方式转换哈希并用十六进制编码时,输出中永远不会包含'$'字符(因为十六进制中没有'$',只有0-F)。但是Tomcat似乎可以很好地处理摘要

  • 问题内容: 我需要计算大文件(或其一部分)的SHA-256哈希。我的实现工作正常,但比C 的CryptoPP计算要慢得多(25分钟vs. 30 GB文件的10分钟)。我需要的是在C 和Java中执行时间相似,因此散列几乎可以同时准备好。我也尝试了Bouncy Castle的实现,但是它给了我相同的结果。这是我如何计算哈希值: 问题答案: 我的解释可能无法解决您的问题,因为它很大程度上取决于您的实际