在C#中加密文件,可以使用对称加密算法或非对称加密算法来实现。对称加密算法使用相同的密钥进行加密和解密,而非对称加密算法使用公钥进行加密,私钥进行解密。
对称加密算法常用的有AES(Advanced Encryption Standard)和DES(Data Encryption Standard)。AES是一种高级加密标准,具有较高的安全性和性能,推荐使用。DES是一种较旧的加密算法,安全性较低,不推荐使用。
以下是在C#中使用AES对称加密算法加密文件的示例代码:
using System;
using System.IO;
using System.Security.Cryptography;
public class FileEncryption
{
public static void EncryptFile(string inputFile, string outputFile, string key)
{
using (Aes aes = Aes.Create())
{
aes.Key = Convert.FromBase64String(key);
aes.GenerateIV();
using (FileStream inputFileStream = new FileStream(inputFile, FileMode.Open))
using (FileStream outputFileStream = new FileStream(outputFile, FileMode.Create))
using (CryptoStream cryptoStream = new CryptoStream(outputFileStream, aes.CreateEncryptor(), CryptoStreamMode.Write))
{
outputFileStream.Write(aes.IV, 0, aes.IV.Length);
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = inputFileStream.Read(buffer, 0, buffer.Length)) > 0)
{
cryptoStream.Write(buffer, 0, bytesRead);
}
}
}
}
public static void DecryptFile(string inputFile, string outputFile, string key)
{
using (Aes aes = Aes.Create())
{
aes.Key = Convert.FromBase64String(key);
byte[] iv = new byte[aes.IV.Length];
using (FileStream inputFileStream = new FileStream(inputFile, FileMode.Open))
using (FileStream outputFileStream = new FileStream(outputFile, FileMode.Create))
using (CryptoStream cryptoStream = new CryptoStream(inputFileStream, aes.CreateDecryptor(aes.Key, iv), CryptoStreamMode.Read))
{
inputFileStream.Read(iv, 0, iv.Length);
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = cryptoStream.Read(buffer, 0, buffer.Length)) > 0)
{
outputFileStream.Write(buffer, 0, bytesRead);
}
}
}
}
}
使用示例:
string inputFile = "input.txt";
string encryptedFile = "encrypted.bin";
string decryptedFile = "decrypted.txt";
string key = "0123456789ABCDEF0123456789ABCDEF";
FileEncryption.EncryptFile(inputFile, encryptedFile, key);
FileEncryption.DecryptFile(encryptedFile, decryptedFile, key);
在上述示例中,inputFile
是待加密的文件路径,encryptedFile
是加密后的文件路径,decryptedFile
是解密后的文件路径,key
是用于加密和解密的密钥。请注意,密钥的安全性非常重要,应妥善保管。
颤动(颤抖)中解密文件的过程与加密相反,首先读取加密文件中的初始向量(IV),然后使用相同的密钥和IV进行解密操作。
以上是在C#中加密文件和在颤动中解密的示例代码。对于更复杂的加密需求,可以考虑使用其他加密算法或库,如RSA非对称加密算法或BouncyCastle库。
领取专属 10元无门槛券
手把手带您无忧上云