diff --git a/framework/Furion.Pure/DataEncryption/Encryptions/DESCEncryption.cs b/framework/Furion.Pure/DataEncryption/Encryptions/DESCEncryption.cs index 897c4a5971adbd30bc26399c0d6dd2221f4452c4..aaa78c6fd6873bbfc25cf704bcc4b051913df9f9 100644 --- a/framework/Furion.Pure/DataEncryption/Encryptions/DESCEncryption.cs +++ b/framework/Furion.Pure/DataEncryption/Encryptions/DESCEncryption.cs @@ -1,12 +1,12 @@ -// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // 让 .NET 开发更简单,更通用,更流行。 // Copyright © 2020-2021 Furion, 百小僧, Baiqian Co.,Ltd. // // 框架名称:Furion // 框架作者:百小僧 // 框架版本:2.8.9 -// 源码地址:Gitee: https://gitee.com/dotnetchina/Furion -// Github:https://github.com/monksoul/Furion +// 源码地址:Gitee: https://gitee.com/dotnetchina/Furion +// Github:https://github.com/monksoul/Furion // 开源协议:Apache-2.0(https://gitee.com/dotnetchina/Furion/blob/master/LICENSE) // ----------------------------------------------------------------------------- @@ -28,15 +28,16 @@ namespace Furion.DataEncryption /// /// 加密文本 /// 密钥 + /// 内部Md5加密是否转大写,默认:false /// - public static string Encrypt(string text, string skey) + public static string Encrypt(string text, string skey, bool isUpper = false) { using var des = new DESCryptoServiceProvider(); byte[] inputByteArray; inputByteArray = Encoding.Default.GetBytes(text); - des.Key = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey).Substring(0, 8)); - des.IV = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey).Substring(0, 8)); + des.Key = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey, isUpper).Substring(0, 8)); + des.IV = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey, isUpper).Substring(0, 8)); using var ms = new System.IO.MemoryStream(); using var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); @@ -58,8 +59,9 @@ namespace Furion.DataEncryption /// /// 加密后字符串 /// 密钥 + /// 内部Md5加密是否转大写,默认:false /// - public static string Decrypt(string hash, string skey) + public static string Decrypt(string hash, string skey, bool isUpper = false) { using var des = new DESCryptoServiceProvider(); int len; @@ -73,8 +75,8 @@ namespace Furion.DataEncryption inputByteArray[x] = (byte)i; } - des.Key = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey).Substring(0, 8)); - des.IV = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey).Substring(0, 8)); + des.Key = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey, isUpper).Substring(0, 8)); + des.IV = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey, isUpper).Substring(0, 8)); using var ms = new System.IO.MemoryStream(); using var cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); diff --git a/framework/Furion.Pure/DataEncryption/Encryptions/MD5Encryption.cs b/framework/Furion.Pure/DataEncryption/Encryptions/MD5Encryption.cs index 1402456f1fb95c29fc1ea61a2a867af915386805..08a730406d11604bf4ca4cc18a2e70729a20070f 100644 --- a/framework/Furion.Pure/DataEncryption/Encryptions/MD5Encryption.cs +++ b/framework/Furion.Pure/DataEncryption/Encryptions/MD5Encryption.cs @@ -1,12 +1,12 @@ -// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // 让 .NET 开发更简单,更通用,更流行。 // Copyright © 2020-2021 Furion, 百小僧, Baiqian Co.,Ltd. // // 框架名称:Furion // 框架作者:百小僧 // 框架版本:2.8.9 -// 源码地址:Gitee: https://gitee.com/dotnetchina/Furion -// Github:https://github.com/monksoul/Furion +// 源码地址:Gitee: https://gitee.com/dotnetchina/Furion +// Github:https://github.com/monksoul/Furion // 开源协议:Apache-2.0(https://gitee.com/dotnetchina/Furion/blob/master/LICENSE) // ----------------------------------------------------------------------------- @@ -24,8 +24,16 @@ namespace Furion.DataEncryption [SkipScan] public static unsafe class MD5Encryption { + /// + /// 小写 + /// private const uint LOWERCASING = 0x2020U; + /// + /// 大写 + /// + private const uint UPPERCASING = 0; + private static readonly delegate* managed, Span, uint, void> _EncodeToUtf16Ptr; [ThreadStatic] @@ -49,10 +57,11 @@ namespace Furion.DataEncryption /// /// 加密文本 /// MD5 字符串 + /// 是否转大写,默认:false /// bool - public static bool Compare(string text, string hash) + public static bool Compare(string text, string hash, bool isUpper = false) { - var hashOfInput = Encrypt(text); + var hashOfInput = Encrypt(text, isUpper); return hash.Equals(hashOfInput, StringComparison.OrdinalIgnoreCase); } @@ -60,15 +69,16 @@ namespace Furion.DataEncryption /// MD5 加密 /// /// 加密文本 + /// 是否转大写,默认:false /// - public static string Encrypt(string text) + public static string Encrypt(string text, bool isUpper = false) { - return string.Create(32, text, static (p, q) => + return string.Create(32, text, (p, q) => { var buffer = Encoding.UTF8.GetBytes(q); Span signed = stackalloc byte[16]; Instance.TryComputeHash(buffer, signed, out _); - _EncodeToUtf16Ptr(signed, p, LOWERCASING); + _EncodeToUtf16Ptr(signed, p, isUpper ? UPPERCASING : LOWERCASING); }); } } diff --git a/framework/Furion/DataEncryption/Encryptions/DESCEncryption.cs b/framework/Furion/DataEncryption/Encryptions/DESCEncryption.cs index 897c4a5971adbd30bc26399c0d6dd2221f4452c4..aaa78c6fd6873bbfc25cf704bcc4b051913df9f9 100644 --- a/framework/Furion/DataEncryption/Encryptions/DESCEncryption.cs +++ b/framework/Furion/DataEncryption/Encryptions/DESCEncryption.cs @@ -1,12 +1,12 @@ -// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // 让 .NET 开发更简单,更通用,更流行。 // Copyright © 2020-2021 Furion, 百小僧, Baiqian Co.,Ltd. // // 框架名称:Furion // 框架作者:百小僧 // 框架版本:2.8.9 -// 源码地址:Gitee: https://gitee.com/dotnetchina/Furion -// Github:https://github.com/monksoul/Furion +// 源码地址:Gitee: https://gitee.com/dotnetchina/Furion +// Github:https://github.com/monksoul/Furion // 开源协议:Apache-2.0(https://gitee.com/dotnetchina/Furion/blob/master/LICENSE) // ----------------------------------------------------------------------------- @@ -28,15 +28,16 @@ namespace Furion.DataEncryption /// /// 加密文本 /// 密钥 + /// 内部Md5加密是否转大写,默认:false /// - public static string Encrypt(string text, string skey) + public static string Encrypt(string text, string skey, bool isUpper = false) { using var des = new DESCryptoServiceProvider(); byte[] inputByteArray; inputByteArray = Encoding.Default.GetBytes(text); - des.Key = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey).Substring(0, 8)); - des.IV = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey).Substring(0, 8)); + des.Key = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey, isUpper).Substring(0, 8)); + des.IV = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey, isUpper).Substring(0, 8)); using var ms = new System.IO.MemoryStream(); using var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); @@ -58,8 +59,9 @@ namespace Furion.DataEncryption /// /// 加密后字符串 /// 密钥 + /// 内部Md5加密是否转大写,默认:false /// - public static string Decrypt(string hash, string skey) + public static string Decrypt(string hash, string skey, bool isUpper = false) { using var des = new DESCryptoServiceProvider(); int len; @@ -73,8 +75,8 @@ namespace Furion.DataEncryption inputByteArray[x] = (byte)i; } - des.Key = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey).Substring(0, 8)); - des.IV = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey).Substring(0, 8)); + des.Key = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey, isUpper).Substring(0, 8)); + des.IV = Encoding.ASCII.GetBytes(MD5Encryption.Encrypt(skey, isUpper).Substring(0, 8)); using var ms = new System.IO.MemoryStream(); using var cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); diff --git a/framework/Furion/DataEncryption/Encryptions/MD5Encryption.cs b/framework/Furion/DataEncryption/Encryptions/MD5Encryption.cs index 1402456f1fb95c29fc1ea61a2a867af915386805..08a730406d11604bf4ca4cc18a2e70729a20070f 100644 --- a/framework/Furion/DataEncryption/Encryptions/MD5Encryption.cs +++ b/framework/Furion/DataEncryption/Encryptions/MD5Encryption.cs @@ -1,12 +1,12 @@ -// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // 让 .NET 开发更简单,更通用,更流行。 // Copyright © 2020-2021 Furion, 百小僧, Baiqian Co.,Ltd. // // 框架名称:Furion // 框架作者:百小僧 // 框架版本:2.8.9 -// 源码地址:Gitee: https://gitee.com/dotnetchina/Furion -// Github:https://github.com/monksoul/Furion +// 源码地址:Gitee: https://gitee.com/dotnetchina/Furion +// Github:https://github.com/monksoul/Furion // 开源协议:Apache-2.0(https://gitee.com/dotnetchina/Furion/blob/master/LICENSE) // ----------------------------------------------------------------------------- @@ -24,8 +24,16 @@ namespace Furion.DataEncryption [SkipScan] public static unsafe class MD5Encryption { + /// + /// 小写 + /// private const uint LOWERCASING = 0x2020U; + /// + /// 大写 + /// + private const uint UPPERCASING = 0; + private static readonly delegate* managed, Span, uint, void> _EncodeToUtf16Ptr; [ThreadStatic] @@ -49,10 +57,11 @@ namespace Furion.DataEncryption /// /// 加密文本 /// MD5 字符串 + /// 是否转大写,默认:false /// bool - public static bool Compare(string text, string hash) + public static bool Compare(string text, string hash, bool isUpper = false) { - var hashOfInput = Encrypt(text); + var hashOfInput = Encrypt(text, isUpper); return hash.Equals(hashOfInput, StringComparison.OrdinalIgnoreCase); } @@ -60,15 +69,16 @@ namespace Furion.DataEncryption /// MD5 加密 /// /// 加密文本 + /// 是否转大写,默认:false /// - public static string Encrypt(string text) + public static string Encrypt(string text, bool isUpper = false) { - return string.Create(32, text, static (p, q) => + return string.Create(32, text, (p, q) => { var buffer = Encoding.UTF8.GetBytes(q); Span signed = stackalloc byte[16]; Instance.TryComputeHash(buffer, signed, out _); - _EncodeToUtf16Ptr(signed, p, LOWERCASING); + _EncodeToUtf16Ptr(signed, p, isUpper ? UPPERCASING : LOWERCASING); }); } }