Selaa lähdekoodia

增加3DES文件加解密功能

Signed-off-by: skywolf627 <skywolf627@qq.com>
skywolf627 2 vuotta sitten
vanhempi
commit
055983de64
1 muutettua tiedostoa jossa 52 lisäystä ja 0 poistoa
  1. 52 0
      Admin.NET/Admin.NET.Core/Util/TripleDES.cs

+ 52 - 0
Admin.NET/Admin.NET.Core/Util/TripleDES.cs

@@ -0,0 +1,52 @@
+using System.IO;
+using System.Security.Cryptography;
+using System.Text;
+
+namespace Admin.NET.Core;
+
+public static class TripleDES
+{ 
+    /// <summary>
+    /// 加密文件
+    /// </summary>
+    /// <param name="inputFile">待加密文件路径</param>
+    /// <param name="outputFile">加密后的文件路径</param>
+    /// <param name="password">密码 (24位长度)</param>
+    public static void EncryptFile(string inputFile, string outputFile, string password)
+    { 
+        using (TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider())
+        {
+            tdes.Mode = CipherMode.ECB;
+            tdes.Padding = PaddingMode.PKCS7;
+            tdes.Key = Encoding.UTF8.GetBytes(password);
+            using (FileStream inputFileStream = new FileStream(inputFile, FileMode.Open))
+            using (FileStream encryptedFileStream = new FileStream(outputFile, FileMode.Create))
+            using (CryptoStream cryptoStream = new CryptoStream(encryptedFileStream, tdes.CreateEncryptor(), CryptoStreamMode.Write))
+            {
+                inputFileStream.CopyTo(cryptoStream);
+            }
+        } 
+    }
+
+    /// <summary>
+    /// 加密文件
+    /// </summary>
+    /// <param name="inputFile">加密的文件路径</param>
+    /// <param name="outputFile">解密后的文件路径</param>
+    /// <param name="password">密码 (24位长度)</param>
+    public static void DecryptFile(string inputFile, string outputFile, string password)
+    { 
+        using (TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider())
+        {
+            tdes.Mode = CipherMode.ECB;
+            tdes.Padding = PaddingMode.PKCS7;
+            tdes.Key = Encoding.UTF8.GetBytes(password);
+            using (FileStream encryptedFileStream = new FileStream(inputFile, FileMode.Open))
+            using (FileStream decryptedFileStream = new FileStream(outputFile, FileMode.Create))
+            using (CryptoStream cryptoStream = new CryptoStream(encryptedFileStream, tdes.CreateDecryptor(), CryptoStreamMode.Read))
+            {
+                cryptoStream.CopyTo(decryptedFileStream);
+            }
+        }
+    }
+}