日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 文件夹加密

發(fā)布時(shí)間:2025/5/22 C# 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 文件夹加密 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

可以加密文件內(nèi)容,也可以對(duì)文件夾本身進(jìn)行加密,本文對(duì)文件夾加密。

一、指定或生成一個(gè)密鑰

? 1)指定的密鑰

/// <summary>/// 密鑰,這個(gè)密碼可以隨便指定/// </summary>public static string sSecretKey = "?\a??64(?";

?2) 也可以生成密鑰

/// <summary> /// 生成一個(gè)64位的密鑰 /// </summary> /// <returns>string</returns> public static string GenerateKey() {//創(chuàng)建對(duì)稱算法的一個(gè)實(shí)例。自動(dòng)生成的密鑰和IV。DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();// 使用自動(dòng)生成的密鑰進(jìn)行加密。return ASCIIEncoding.ASCII.GetString(desCrypto.Key);}

二、調(diào)用ZeroMemory 函數(shù)從內(nèi)存中刪除Key

///<summary> /// 調(diào)用該函數(shù)從內(nèi)存中刪除的Key后使用 /// </summary> [DllImport("KERNEL32.DLL", EntryPoint = "RtlZeroMemory")] public static extern bool ZeroMemory(IntPtr Destination, int Length); 三、加密文件 /// <summary>/// 加密文件/// </summary>/// <param name="sInputFilename">待加密的文件的完整路徑</param>/// <param name="sOutputFilename">加密后的文件的完整路徑</param>public static void EncryptFile(string sInputFilename, string sOutputFilename){FileStream fsInput = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);FileStream fsEncrypted = new FileStream(sOutputFilename, FileMode.Create, FileAccess.Write);DESCryptoServiceProvider DES = new DESCryptoServiceProvider();DES.Key = ASCIIEncoding.ASCII.GetBytes(sSecretKey);DES.IV = ASCIIEncoding.ASCII.GetBytes(sSecretKey);ICryptoTransform desencrypt = DES.CreateEncryptor();CryptoStream cryptostream = new CryptoStream(fsEncrypted, desencrypt, CryptoStreamMode.Write);byte[] bytearrayinput = new byte[fsInput.Length];fsInput.Read(bytearrayinput, 0, bytearrayinput.Length);cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length);cryptostream.Flush();fsInput.Flush();fsEncrypted.Flush();cryptostream.Close();fsInput.Close();fsEncrypted.Close();} 四、解密文件 /// <summary>/// 解密文件/// </summary>/// <param name="sInputFilename">待解密的文件的完整路徑</param>/// <param name="sOutputFilename">解密后的文件的完整路徑</param>public static void DecryptFile(string sInputFilename, string sOutputFilename){DESCryptoServiceProvider DES = new DESCryptoServiceProvider();DES.Key = ASCIIEncoding.ASCII.GetBytes(sSecretKey);DES.IV = ASCIIEncoding.ASCII.GetBytes(sSecretKey);FileStream fsread = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);ICryptoTransform desdecrypt = DES.CreateDecryptor();CryptoStream cryptostreamDecr = new CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read);StreamWriter fsDecrypted = new StreamWriter(sOutputFilename);fsDecrypted.Write(new StreamReader(cryptostreamDecr).ReadToEnd());fsDecrypted.Flush();fsDecrypted.Close();} 五、完整代碼 /// <summary>/// 文件加密/// </summary>public class FileSecretHelper{/// <summary>/// 密鑰,這個(gè)密碼可以隨便指定/// </summary>public static string sSecretKey = "?\a??64(?";/// <summary>/// 調(diào)用該函數(shù)從內(nèi)存中刪除的Key后使用/// </summary>[DllImport("KERNEL32.DLL", EntryPoint = "RtlZeroMemory")]public static extern bool ZeroMemory(IntPtr Destination, int Length);/// <summary>/// 生成一個(gè)64位的密鑰/// </summary>/// <returns>string</returns>public static string GenerateKey(){//創(chuàng)建對(duì)稱算法的一個(gè)實(shí)例。自動(dòng)生成的密鑰和IV。DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();// 使用自動(dòng)生成的密鑰進(jìn)行加密。return ASCIIEncoding.ASCII.GetString(desCrypto.Key);}/// <summary>/// 加密文件/// </summary>/// <param name="sInputFilename">待加密的文件的完整路徑</param>/// <param name="sOutputFilename">加密后的文件的完整路徑</param>public static void EncryptFile(string sInputFilename, string sOutputFilename){FileStream fsInput = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);FileStream fsEncrypted = new FileStream(sOutputFilename, FileMode.Create, FileAccess.Write);DESCryptoServiceProvider DES = new DESCryptoServiceProvider();DES.Key = ASCIIEncoding.ASCII.GetBytes(sSecretKey);DES.IV = ASCIIEncoding.ASCII.GetBytes(sSecretKey);ICryptoTransform desencrypt = DES.CreateEncryptor();CryptoStream cryptostream = new CryptoStream(fsEncrypted, desencrypt, CryptoStreamMode.Write);byte[] bytearrayinput = new byte[fsInput.Length];fsInput.Read(bytearrayinput, 0, bytearrayinput.Length);cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length);cryptostream.Flush();fsInput.Flush();fsEncrypted.Flush();cryptostream.Close();fsInput.Close();fsEncrypted.Close();}/// <summary>/// 解密文件/// </summary>/// <param name="sInputFilename">待解密的文件的完整路徑</param>/// <param name="sOutputFilename">解密后的文件的完整路徑</param>public static void DecryptFile(string sInputFilename, string sOutputFilename){DESCryptoServiceProvider DES = new DESCryptoServiceProvider();DES.Key = ASCIIEncoding.ASCII.GetBytes(sSecretKey);DES.IV = ASCIIEncoding.ASCII.GetBytes(sSecretKey);FileStream fsread = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);ICryptoTransform desdecrypt = DES.CreateDecryptor();CryptoStream cryptostreamDecr = new CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read);StreamWriter fsDecrypted = new StreamWriter(sOutputFilename);fsDecrypted.Write(new StreamReader(cryptostreamDecr).ReadToEnd());fsDecrypted.Flush();fsDecrypted.Close();}}

?

轉(zhuǎn)載于:https://www.cnblogs.com/bohetang/p/4025836.html

總結(jié)

以上是生活随笔為你收集整理的C# 文件夹加密的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。