浏览代码

支持功能:https://gitee.com/masuit/Masuit.Tools/issues/I3PP31

懒得勤快 4 年之前
父节点
当前提交
e3490c664d

+ 3 - 3
Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj

@@ -4,7 +4,7 @@
     <LangVersion>latest</LangVersion>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <CodeAnalysisRuleSet />
-    <Version>2.4.3.3</Version>
+    <Version>2.4.3.4</Version>
     <Authors>懒得勤快</Authors>
     <Description>Masuit.Tools基础公共库</Description>
     <Copyright>懒得勤快,长空X</Copyright>
@@ -17,9 +17,9 @@
     <RepositoryType>Github</RepositoryType>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
     <PackageRequireLicenseAcceptance>False</PackageRequireLicenseAcceptance>
-    <FileVersion>2.4.3.3</FileVersion>
+    <FileVersion>2.4.3.4</FileVersion>
     <Company>ldqk.org</Company>
-    <AssemblyVersion>2.4.3.3</AssemblyVersion>
+    <AssemblyVersion>2.4.3.4</AssemblyVersion>
     <PackageLicenseUrl>https://github.com/ldqk/Masuit.Tools/blob/master/LICENSE</PackageLicenseUrl>
     <EmbedUntrackedSources>true</EmbedUntrackedSources>
     <IncludeSymbols>true</IncludeSymbols>

+ 102 - 0
Masuit.Tools.Abstractions/Security/Encrypt.cs

@@ -84,6 +84,33 @@ namespace Masuit.Tools.Security
             return ret.ToString();
         }
 
+        /// <summary> 
+        /// 加密字符串
+        /// 加密密钥必须为8位
+        /// </summary> 
+        /// <param name="strText">被加密的字符串</param>
+        /// <param name="desKey"></param>
+        /// <param name="desIV"></param>
+        /// <returns>加密后的数据</returns> 
+        public static string DesEncrypt(this string strText, byte[] desKey, byte[] desIV)
+        {
+            StringBuilder ret = new StringBuilder();
+            using var des = new DESCryptoServiceProvider();
+            byte[] inputByteArray = Encoding.Default.GetBytes(strText);
+            des.Key = desKey;
+            des.IV = desIV;
+            MemoryStream ms = new MemoryStream();
+            using var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
+            cs.Write(inputByteArray, 0, inputByteArray.Length);
+            cs.FlushFinalBlock();
+            foreach (byte b in ms.ToArray())
+            {
+                ret.AppendFormat($"{b:X2}");
+            }
+
+            return ret.ToString();
+        }
+
         /// <summary>
         /// DES加密文件
         /// </summary>
@@ -119,6 +146,30 @@ namespace Masuit.Tools.Security
             }
         }
 
+        /// <summary>
+        /// DES加密文件
+        /// </summary>
+        /// <param name="fin">文件输入流</param>
+        /// <param name="outFilePath">文件输出路径</param>
+        /// <param name="desKey"></param>
+        /// <param name="desIV"></param>
+        public static void DesEncrypt(this FileStream fin, string outFilePath, byte[] desKey, byte[] desIV)
+        {
+            using var fout = new FileStream(outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
+            fout.SetLength(0);
+            byte[] bin = new byte[100];
+            long rdlen = 0;
+            long totlen = fin.Length;
+            DES des = new DESCryptoServiceProvider();
+            var encStream = new CryptoStream(fout, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write);
+            while (rdlen < totlen)
+            {
+                var len = fin.Read(bin, 0, 100);
+                encStream.Write(bin, 0, len);
+                rdlen += len;
+            }
+        }
+
         /// <summary>
         /// DES解密文件
         /// </summary>
@@ -154,6 +205,30 @@ namespace Masuit.Tools.Security
             }
         }
 
+        /// <summary>
+        /// DES解密文件
+        /// </summary>
+        /// <param name="fin">输入文件流</param>
+        /// <param name="outFilePath">文件输出路径</param>
+        /// <param name="desKey"></param>
+        /// <param name="desIV"></param>
+        public static void DesDecrypt(this FileStream fin, string outFilePath, byte[] desKey, byte[] desIV)
+        {
+            using var fout = new FileStream(outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
+            fout.SetLength(0);
+            byte[] bin = new byte[100];
+            long rdlen = 0;
+            long totlen = fin.Length;
+            using DES des = new DESCryptoServiceProvider();
+            var encStream = new CryptoStream(fout, des.CreateDecryptor(desKey, desIV), CryptoStreamMode.Write);
+            while (rdlen < totlen)
+            {
+                var len = fin.Read(bin, 0, 100);
+                encStream.Write(bin, 0, len);
+                rdlen += len;
+            }
+        }
+
         /// <summary>
         ///     DES解密算法
         ///     密钥为8位
@@ -185,6 +260,33 @@ namespace Masuit.Tools.Security
             return Encoding.Default.GetString(ms.ToArray());
         }
 
+        /// <summary>
+        ///     DES解密算法
+        ///     密钥为8位
+        /// </summary>
+        /// <param name="pToDecrypt">需要解密的字符串</param>
+        /// <param name="desKey"></param>
+        /// <param name="desIV"></param>
+        /// <returns>解密后的数据</returns>
+        public static string DesDecrypt(this string pToDecrypt, byte[] desKey, byte[] desIV)
+        {
+            var ms = new MemoryStream();
+            using var des = new DESCryptoServiceProvider();
+            var inputByteArray = new byte[pToDecrypt.Length / 2];
+            for (int x = 0; x < pToDecrypt.Length / 2; x++)
+            {
+                int i = Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16);
+                inputByteArray[x] = (byte)i;
+            }
+
+            des.Key = desKey;
+            des.IV = desIV;
+            using var cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
+            cs.Write(inputByteArray, 0, inputByteArray.Length);
+            cs.FlushFinalBlock();
+            return Encoding.Default.GetString(ms.ToArray());
+        }
+
         #endregion
 
         #region 对称加密算法AES RijndaelManaged加密解密

+ 6 - 6
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -2,9 +2,9 @@
 
     <PropertyGroup>
         <TargetFrameworks>netstandard2.0;netstandard2.1;net5</TargetFrameworks>
-        <Description>            包含一些常用的操作类,大都是静态类,加密解密,反射操作,硬件信息,字符串扩展方法,日期时间扩展操作,大文件拷贝,图像裁剪,html处理,验证码、NoSql等常用封装。
-            官网教程:https://ldqk.org/55
-            github:https://github.com/ldqk/Masuit.Tools
+        <Description>包含一些常用的操作类,大都是静态类,加密解密,反射操作,硬件信息,字符串扩展方法,日期时间扩展操作,大文件拷贝,图像裁剪,html处理,验证码、NoSql等常用封装。
+官网教程:https://ldqk.org/55
+github:https://github.com/ldqk/Masuit.Tools
         </Description>
         <Copyright>Copyright © 懒得勤快</Copyright>
         <PackageProjectUrl>https://github.com/ldqk/Masuit.Tools</PackageProjectUrl>
@@ -18,10 +18,10 @@
         <UserSecretsId>830c282f-f7c1-42be-8651-4cd06ac8e73f</UserSecretsId>
         <RepositoryType>Github</RepositoryType>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-        <Version>2.4.3.3</Version>
-        <FileVersion>2.4.3.3</FileVersion>
+        <Version>2.4.3.4</Version>
+        <FileVersion>2.4.3.4</FileVersion>
         <Company>ldqk.org</Company>
-        <AssemblyVersion>2.4.3.3</AssemblyVersion>
+        <AssemblyVersion>2.4.3.4</AssemblyVersion>
         <Authors>懒得勤快X</Authors>
         <RepositoryUrl>https://github.com/ldqk/Masuit.Tools</RepositoryUrl>
         <EmbedUntrackedSources>true</EmbedUntrackedSources>

二进制
Masuit.Tools.Net45/Properties/AssemblyInfo.cs


+ 1 - 1
Masuit.Tools.Net45/package.nuspec

@@ -4,7 +4,7 @@
     <!--*-->
     <id>Masuit.Tools.Net45</id>
     <!--*-->
-    <version>2.4.3.3</version>
+    <version>2.4.3.4</version>
     <title>Masuit.Tools</title>
     <!--*-->
     <authors>masuit.com</authors>

二进制
Masuit.Tools/Properties/AssemblyInfo.cs


+ 2 - 3
Masuit.Tools/package.nuspec

@@ -4,7 +4,7 @@
     <!--*-->
     <id>Masuit.Tools.Net</id>
     <!--*-->
-    <version>2.4.3.3</version>
+    <version>2.4.3.4</version>
     <title>Masuit.Tools</title>
     <!--*-->
     <authors>masuit.com</authors>
@@ -15,9 +15,8 @@
     <requireLicenseAcceptance>false</requireLicenseAcceptance>
     <!--*-->
     <description>包含一些常用的操作类,大都是静态类,加密解密,反射操作,硬件信息,字符串扩展方法,日期时间扩展操作,大文件拷贝,图像裁剪,html处理,验证码、NoSql等常用封装。
-      
 官网教程:https://ldqk.org/55
-      
+
 github:https://github.com/ldqk/Masuit.Tools</description>
     <!--*-->
     <releaseNotes>如有问题请联系作者QQ:3444764617,或者到项目的github反馈问题,详细的API文档在github上:https://github.com/ldqk/Masuit.Tools</releaseNotes>