From 1ba7c3240c2b31c243a4be6b2a5341a7d5b67b98 Mon Sep 17 00:00:00 2001 From: superbisu <9974343+superbisu@user.noreply.gitee.com> Date: Tue, 7 May 2024 22:30:35 +0800 Subject: [PATCH] =?UTF-8?q?SHA1=20=E5=8A=A0=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Encryptions/SHA1Encryption.cs | 67 +++++++++++++++++++ .../Extensions/StringEncryptionExtensions.cs | 11 +++ 2 files changed, 78 insertions(+) create mode 100644 framework/Furion/DataEncryption/Encryptions/SHA1Encryption.cs diff --git a/framework/Furion/DataEncryption/Encryptions/SHA1Encryption.cs b/framework/Furion/DataEncryption/Encryptions/SHA1Encryption.cs new file mode 100644 index 0000000000..a0af3f8cb8 --- /dev/null +++ b/framework/Furion/DataEncryption/Encryptions/SHA1Encryption.cs @@ -0,0 +1,67 @@ +// ------------------------------------------------------------------------ +// 版权信息 +// 版权归百小僧及百签科技(广东)有限公司所有。 +// 所有权利保留。 +// 官方网站:https://baiqian.com +// +// 许可证信息 +// Furion 项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。 +// 许可证的完整文本可以在源代码树根目录中的 LICENSE-APACHE 和 LICENSE-MIT 文件中找到。 +// 官方网站:https://furion.net +// +// 使用条款 +// 使用本代码应遵守相关法律法规和许可证的要求。 +// +// 免责声明 +// 对于因使用本代码而产生的任何直接、间接、偶然、特殊或后果性损害,我们不承担任何责任。 +// +// 其他重要信息 +// Furion 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。 +// 有关 Furion 项目的其他详细信息,请参阅位于源代码树根目录中的 COPYRIGHT 和 DISCLAIMER 文件。 +// +// 更多信息 +// 请访问 https://gitee.com/dotnetchina/Furion 获取更多关于 Furion 项目的许可证和版权信息。 +// ------------------------------------------------------------------------ + +using System.Security.Cryptography; +using System.Text; + +namespace Furion.DataEncryption; + +/// +/// SHA1 加密 +/// +[SuppressSniffer] +public class SHA1Encryption +{ + /// + /// SHA1 加密 + /// + /// 加密文本 + /// 是否输出大写加密,默认 false + /// + public static string Encrypt(string text, bool uppercase = false) + { + return Encrypt(Encoding.UTF8.GetBytes(text), uppercase); + } + + /// + /// SHA1 加密 + /// + /// 字节数组 + /// 是否输出大写加密,默认 false + /// + public static string Encrypt(byte[] bytes, bool uppercase = false) + { + var data = SHA1.HashData(bytes); + + var stringBuilder = new StringBuilder(); + for (int i = 0; i < data.Length; i++) + { + stringBuilder.Append(data[i].ToString("x2")); + } + + var sha1String = stringBuilder.ToString(); + return !uppercase ? sha1String : sha1String.ToUpper(); + } +} \ No newline at end of file diff --git a/framework/Furion/DataEncryption/Extensions/StringEncryptionExtensions.cs b/framework/Furion/DataEncryption/Extensions/StringEncryptionExtensions.cs index e4b7fc7887..4c05696f2f 100644 --- a/framework/Furion/DataEncryption/Extensions/StringEncryptionExtensions.cs +++ b/framework/Furion/DataEncryption/Extensions/StringEncryptionExtensions.cs @@ -184,4 +184,15 @@ public static class StringEncryptionExtensions { return RSAEncryption.Decrypt(text, privateKey); } + + /// + /// 字符串 SHA1 加密 + /// + /// 需要加密的文本 + /// 是否输出大写加密,默认 false + /// + public static string ToSHA1Encrypt(this string text, bool uppercase = false) + { + return SHA1Encryption.Encrypt(text, uppercase); + } } \ No newline at end of file -- Gitee