diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Utilities/HmacSha256Util.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Utilities/HmacSha256Util.cs new file mode 100644 index 00000000..89064155 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Utilities/HmacSha256Util.cs @@ -0,0 +1,44 @@ +using System; +using System.Security.Cryptography; +using System.Text; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Utilities +{ + /// + /// HMAC-SHA-1 算法工具类。 + /// + public static class HmacSha256Util + { + /// + /// 获取信息摘要。 + /// + /// 密钥字节数组。 + /// 信息字节数组。 + /// 信息摘要。 + public static string Hash(byte[] secretBytes, byte[] bytes) + { + if (secretBytes == null) throw new ArgumentNullException(nameof(secretBytes)); + if (bytes == null) throw new ArgumentNullException(nameof(bytes)); + + using HMAC hmac = new HMACSHA256(secretBytes); + byte[] hashBytes = hmac.ComputeHash(bytes); + return BitConverter.ToString(hashBytes).Replace("-", ""); + } + + /// + /// 获取信息摘要。 + /// + /// 密钥。 + /// 文本信息。 + /// 信息摘要。 + public static string Hash(string secret, string message) + { + if (secret == null) throw new ArgumentNullException(nameof(secret)); + if (message == null) throw new ArgumentNullException(nameof(message)); + + byte[] secretBytes = Encoding.UTF8.GetBytes(secret); + byte[] bytes = Encoding.UTF8.GetBytes(message); + return Hash(secretBytes, bytes); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Utilities/Sha1Util.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Utilities/Sha1Util.cs new file mode 100644 index 00000000..b8385dac --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Utilities/Sha1Util.cs @@ -0,0 +1,39 @@ +using System; +using System.Security.Cryptography; +using System.Text; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Utilities +{ + /// + /// SHA-1 算法工具类。 + /// + public static class Sha1Util + { + /// + /// 获取信息摘要。 + /// + /// 信息字节数组。 + /// 信息摘要。 + public static string Hash(byte[] bytes) + { + if (bytes == null) throw new ArgumentNullException(nameof(bytes)); + + using SHA1 sha = SHA1.Create(); + byte[] hashBytes = sha.ComputeHash(bytes); + return BitConverter.ToString(hashBytes).Replace("-", ""); + } + + /// + /// 获取信息摘要。 + /// + /// 文本信息。 + /// 信息摘要。 + public static string Hash(string message) + { + if (message == null) throw new ArgumentNullException(nameof(message)); + + byte[] bytes = Encoding.UTF8.GetBytes(message); + return Hash(bytes); + } + } +}