|

楼主 |
发表于 2022-4-5 18:45:55
|
显示全部楼层
- using System;
- using System.IO;
- using System.Security;
- using System.Security.Cryptography;
- using System.Runtime.InteropServices;
- using System.Text;
- namespace ConsoleApp3
- {
- class Class1
- {
- [System.Runtime.InteropServices.DllImport("KERNEL32.DLL", EntryPoint="RtlZeroMemory")]
- public static extern bool ZeroMemory(IntPtr Destination, int Length);
- static string GenerateKey()
- {
- DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();
- return ASCIIEncoding.ASCII.GetString(desCrypto.Key);
- }
- static void EncryptFile(string sInputFilename,string sOutputFilename,string sKey)
- {
- 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(sKey);
- DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
- 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.Close();
- fsInput.Close();
- fsEncrypted.Close();
- }
- static void DecryptFile(string sInputFilename,string sOutputFilename,string sKey)
- {
- DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
- DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
- DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
- 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();
- }
- static void Main()
- {
- string sSecretKey;
- sSecretKey = GenerateKey();
- GCHandle gch = GCHandle.Alloc(sSecretKey, GCHandleType.Pinned);
- EncryptFile("D:\\MyData.doc", "D:\\Encrypted.doc", sSecretKey);
- DecryptFile("D:\\Encrypted.doc", "D:\\Decrypted.doc", sSecretKey);
- ZeroMemory(gch.AddrOfPinnedObject(), sSecretKey.Length * 2);
- gch.Free();
- }
- }
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|