在Java中创建Base64编码的SHA-256哈希

时间:2017-02-27 13:13:09

标签: java oracle11g

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

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

提前致谢。

2 个答案:

答案 0 :(得分:5)

使用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());
}

BTW:SHA256不是加密,它是哈希。哈希不需要密钥,加密也是如此。加密可以反转(使用密钥),哈希不能。更多关于维基百科:https://en.wikipedia.org/wiki/Hash_function

答案 1 :(得分:1)

您可以使用MessageDigest转换为SHA256,使用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))));
}