4
A
回答
9
加密:
private const int SaltSize = 8;
public static void Encrypt(FileInfo targetFile, string password)
{
var keyGenerator = new Rfc2898DeriveBytes(password, SaltSize);
var rijndael = Rijndael.Create();
// BlockSize, KeySize in bit --> divide by 8
rijndael.IV = keyGenerator.GetBytes(rijndael.BlockSize/8);
rijndael.Key = keyGenerator.GetBytes(rijndael.KeySize/8);
using(var fileStream = targetFile.Create())
{
// write random salt
fileStream.Write(keyGenerator.Salt, 0, SaltSize);
using(var cryptoStream = new CryptoStream(fileStream, rijndael.CreateEncryptor(), CryptoStreamMode.Write))
{
// write data
}
}
}
和解密:
public static void Decrypt(FileInfo sourceFile, string password)
{
// read salt
var fileStream = sourceFile.OpenRead();
var salt = new byte[SaltSize];
fileStream.Read(salt, 0, SaltSize);
// initialize algorithm with salt
var keyGenerator = new Rfc2898DeriveBytes(password, salt);
var rijndael = Rijndael.Create();
rijndael.IV = keyGenerator.GetBytes(rijndael.BlockSize/8);
rijndael.Key = keyGenerator.GetBytes(rijndael.KeySize/8);
// decrypt
using(var cryptoStream = new CryptoStream(fileStream, rijndael.CreateDecryptor(), CryptoStreamMode.Read))
{
// read data
}
}
+0
在写入和读取数据时使用哪个对象? – writeToBhuwan 2013-05-06 11:31:23
+0
如果您使用CryptoStream进行网络通信,您应该找到一个流密码。 Rijndael通常用作分组密码。流密码适用于小块数据,这在聊天网络流中是典型的。与分组密码相比,流密码可以更安全,特别是当数据流不是块状时。分组密码需要填充和链接。流密码可以花费停机时间来计算更多的伪随机密钥,然后使用非常有效的XOR进行实际的加密/解密操作。 – Todd 2017-02-24 06:13:49
2
使用RijndaelManaged类进行加密,并使用Rfc2898DeriveBytes生成密码的密钥(和IV)。
相关问题
- 1. 如何创建受密码保护的pdf文件
- 2. 加密,受密码保护的文件创建
- 3. 创建受密码保护的备份
- 4. 使用TrueZip创建受密码保护的ZIP文件
- 5. 创建受密码保护的zip文件
- 6. hash_file如何在PHP中用于受密码保护的文件?
- 7. 连接受密码保护的文件
- 8. 创建.tar文件时保护密码?
- 9. PHP创建密码保护文件夹
- 10. 如何阅读在C#中的受密码保护的zip文件
- 11. 在nodejs中使用子进程创建受密码保护的zip文件
- 12. 如何在SSIS中访问受密码保护的文件夹中的文件?
- 13. 如何将受密码保护的PDF保存为非密码保护的PDF
- 14. 如何在vb.net窗体中创建受密码保护的按钮
- 15. 检测受密码保护的文档
- 16. 如何使用php生成受密码保护的csv文件
- 17. 如何检查文件是否受密码保护/加密或不在java中
- 18. 在node.js中生成受密码保护的ZIP文件
- 19. 在Java中打开受密码保护的Word文件?
- 20. 如何在rails中创建密码保护的RSS提要
- 21. 如何在Java中创建密码保护的Excel?
- 22. AppMaker中受密码保护的页面
- 23. 创建受密码保护的Access数据库
- 24. 寻找创建受密码保护的Git仓库
- 25. 用密码保护pdf文件c#
- 26. 我们如何在MAC中生成受密码保护的csv文件?
- 27. 如何在android中设置受保护的热点(带密码)
- 28. 如何在Javascript中请求受密码保护的页面
- 29. 密码保护CSV文件
- 30. 密码保护Elmah.axd文件
你真的应该说什么时候你说, “密码保护的文件” 你的意思。你的意思是当有人试图打开它时,弹出一个“输入密码”对话框,或者是什么? – 2009-04-11 23:14:44
是的,这的确是我的意思 – Peter 2009-04-12 01:09:54