From 81ef04875bb5d59343cfb772128d79c4e2954416 Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 5 May 2022 14:01:09 +0800 Subject: [PATCH] add methods --- CHANGELOG.md | 1 + .../cn/hutool/crypto/digest/DigestUtil.java | 106 ++++++++++++++++++ 2 files changed, 107 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61c13f66d..9275986f4 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * 【core 】 BeanUtil增加beanToMap重载(pr#2292@Github) * 【core 】 Assert增加对应的equals及notEquals方法(pr#612@Gitee) * 【core 】 Assert增加对应的equals及notEquals方法(pr#612@Gitee) +* 【core 】 DigestUtil增加sha512方法(issue#2298@Github) ### 🐞Bug修复 * 【db 】 修复RedisDS无法设置maxWaitMillis问题(issue#I54TZ9@Gitee) diff --git a/hutool-crypto/src/main/java/cn/hutool/crypto/digest/DigestUtil.java b/hutool-crypto/src/main/java/cn/hutool/crypto/digest/DigestUtil.java index fc6fd61ce..e6c04e305 100644 --- a/hutool-crypto/src/main/java/cn/hutool/crypto/digest/DigestUtil.java +++ b/hutool-crypto/src/main/java/cn/hutool/crypto/digest/DigestUtil.java @@ -487,4 +487,110 @@ public class DigestUtil { public static boolean bcryptCheck(String password, String hashed) { return BCrypt.checkpw(password, hashed); } + + // ------------------------------------------------------------------------------------------- SHA-512 + + /** + * 计算SHA-512摘要值 + * + * @param data 被摘要数据 + * @return SHA-512摘要 + */ + public static byte[] sha512(final byte[] data) { + return new Digester(DigestAlgorithm.SHA512).digest(data); + } + + /** + * 计算SHA-512摘要值 + * + * @param data 被摘要数据 + * @param charset 编码 + * @return SHA-512摘要 + * @since 3.0.8 + */ + public static byte[] sha512(final String data, final String charset) { + return new Digester(DigestAlgorithm.SHA512).digest(data, charset); + } + + /** + * 计算sha512摘要值,使用UTF-8编码 + * + * @param data 被摘要数据 + * @return MD5摘要 + */ + public static byte[] sha512(final String data) { + return sha512(data, CharsetUtil.UTF_8); + } + + /** + * 计算SHA-512摘要值 + * + * @param data 被摘要数据 + * @return SHA-512摘要 + */ + public static byte[] sha512(final InputStream data) { + return new Digester(DigestAlgorithm.SHA512).digest(data); + } + + /** + * 计算SHA-512摘要值 + * + * @param file 被摘要文件 + * @return SHA-512摘要 + */ + public static byte[] sha512(final File file) { + return new Digester(DigestAlgorithm.SHA512).digest(file); + } + + /** + * 计算SHA-1摘要值,并转为16进制字符串 + * + * @param data 被摘要数据 + * @return SHA-512摘要的16进制表示 + */ + public static String sha512Hex(final byte[] data) { + return new Digester(DigestAlgorithm.SHA512).digestHex(data); + } + + /** + * 计算SHA-512摘要值,并转为16进制字符串 + * + * @param data 被摘要数据 + * @param charset 编码 + * @return SHA-512摘要的16进制表示 + */ + public static String sha512Hex(final String data, final String charset) { + return new Digester(DigestAlgorithm.SHA512).digestHex(data, charset); + } + + /** + * 计算SHA-512摘要值,并转为16进制字符串 + * + * @param data 被摘要数据 + * @return SHA-512摘要的16进制表示 + */ + public static String sha512Hex(final String data) { + return sha512Hex(data, CharsetUtil.UTF_8); + } + + /** + * 计算SHA-512摘要值,并转为16进制字符串 + * + * @param data 被摘要数据 + * @return SHA-512摘要的16进制表示 + */ + public static String sha512Hex(final InputStream data) { + return new Digester(DigestAlgorithm.SHA512).digestHex(data); + } + + /** + * 计算SHA-512摘要值,并转为16进制字符串 + * + * @param file 被摘要文件 + * @return SHA-512摘要的16进制表示 + */ + public static String sha512Hex(final File file) { + return new Digester(DigestAlgorithm.SHA512).digestHex(file); + } + }