我有一個名爲Sample的FILE。它可以是任何類型(.txt/.doc/.docx/.pdf/....)。現在我想爲該文件設置密碼。如果可以的話,只需要幫助我的代碼。如何保護文件?
Q
如何保護文件?
0
A
回答
0
您可以使用自己的passwort或生成的密鑰加密文件(見documentation)從MSDN
例子:
class Class1
{
// Call this function to remove the key from memory after use for security
[System.Runtime.InteropServices.DllImport("KERNEL32.DLL", EntryPoint="RtlZeroMemory")]
public static extern bool ZeroMemory(IntPtr Destination, int Length);
// Function to Generate a 64 bits Key.
static string GenerateKey()
{
// Create an instance of Symetric Algorithm. Key and IV is generated automatically.
DESCryptoServiceProvider desCrypto =(DESCryptoServiceProvider)DESCryptoServiceProvider.Create();
// Use the Automatically generated key for Encryption.
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();
//A 64 bit key and IV is required for this provider.
//Set secret key For DES algorithm.
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
//Set initialization vector.
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
//Create a file stream to read the encrypted file back.
FileStream fsread = new FileStream(sInputFilename,
FileMode.Open,
FileAccess.Read);
//Create a DES decryptor from the DES instance.
ICryptoTransform desdecrypt = DES.CreateDecryptor();
//Create crypto stream set to read and do a
//DES decryption transform on incoming bytes.
CryptoStream cryptostreamDecr = new CryptoStream(fsread,
desdecrypt,
CryptoStreamMode.Read);
//Print the contents of the decrypted file.
StreamWriter fsDecrypted = new StreamWriter(sOutputFilename);
fsDecrypted.Write(new StreamReader(cryptostreamDecr).ReadToEnd());
fsDecrypted.Flush();
fsDecrypted.Close();
}
static void Main()
{
// Must be 64 bits, 8 bytes.
// Distribute this key to the user who will decrypt this file.
string sSecretKey;
// Get the Key for the file to Encrypt.
sSecretKey = GenerateKey();
// For additional security Pin the key.
GCHandle gch = GCHandle.Alloc(sSecretKey,GCHandleType.Pinned);
// Encrypt the file.
EncryptFile(@"C:\MyData.txt",
@"C:\Encrypted.txt",
sSecretKey);
// Decrypt the file.
DecryptFile(@"C:\Encrypted.txt",
@"C:\Decrypted.txt",
sSecretKey);
// Remove the Key from memory.
ZeroMemory(gch.AddrOfPinnedObject(), sSecretKey.Length * 2);
gch.Free();
}
}
}
0
你不能設置在每一個文件的密碼,以限制它從開幕。但是,您可以使用加密來保護文件內容。
見C#這個鏈接進行加密解密& http://support.microsoft.com/kb/307010
相關問題
- 1. 如何保護文件
- 2. 如何保護htdocs文件
- 3. node.js如何保護文件?
- 4. 如何保護SAM文件
- 5. 如何保護Swagger.yaml文件?
- 6. 如何保護PHP文件
- 7. 如何保護XML文件?
- 8. 保護文件
- 9. 如何保護iOS軟件包文件
- 10. 如何保護直接文件訪問
- 11. 如何保護用戶的文件
- 12. 如何保護目錄中的文件?
- 13. 如何閱讀保護一些文件
- 14. 如何保護woocommerce可下載文件
- 15. 如何保護我的「hibernate.cfg.xml」文件? (Nhibernate)
- 16. 如何保護管理員JavaScript文件?
- 17. 如何保護項目的源文件?
- 18. 如何保護wp-content文件夾?
- 19. 如何在Linux上保護.bash_history文件
- 20. 如何保護.env文件laravel
- 21. 如何保護android數據庫文件?
- 22. 如何保護.SQL文件密碼?
- 23. 如何保護處理文件
- 24. 如何保護iframe源文件
- 25. 如何保護連接php文件?
- 26. 如何保護我的文件
- 27. 保護cron文件
- 28. 保護PHP文件
- 29. 保護ELMAH文件
- 30. 保護Apk文件
歡迎#1,你有沒有試過_anything_這麼遠嗎?先顯示你的努力..請閱讀[常見問題]和[問]也.. – 2013-04-10 06:43:09
http://stackoverflow.com/questions/740837/how-to-create-a-password-protected-file-in-c-sharp – 2013-04-10 06:45:28