c# - 在返回流函数中处理不同的流
问题描述
我有返回 CryptoStream 的函数:
public static CryptoStream CreateStream(string inputfile, string password)
{
byte[] passwordBytes = Encoding.UTF8.GetBytes(password);
byte[] salt = new byte[32];
FileStream fsCrypt = new FileStream(inputfile, FileMode.Open);
fsCrypt.Read(salt, 0, salt.Length);
RijndaelManaged AES = new RijndaelManaged();
AES.KeySize = 256;
AES.BlockSize = 128;
var key = new Rfc2898DeriveBytes(passwordBytes, salt, 50000);
AES.Key = key.GetBytes(AES.KeySize / 8);
AES.IV = key.GetBytes(AES.BlockSize / 8);
AES.Padding = PaddingMode.PKCS7;
AES.Mode = CipherMode.CFB;
return new CryptoStream(fsCrypt, AES.CreateDecryptor(), CryptoStreamMode.Read);
}
我这样称呼它:
CryptoStream cs = FileCryptoDecryptor.CreateStream("file.xml.aes", AppPass);
在 CreateStream 函数中,我正在创建文件流,我的问题是当我调用它时cs.Dipose();
它是否也处理文件流?
解决方案
的构造函数有第 4 个可选参数,CryptoStream
目前默认情况下正在处理它。您可以将true
其作为额外参数传递以使其保持打开状态。
推荐阅读
- python - 打印具有最大小数点的列的值
- python - 如何使用 Python 从网站链接复制网页的所有文本
- python - Python:带有子模块的应用程序 - 导入不起作用(NameError:未定义名称“时间”)
- database - 休眠 DDL 问题。DB Tables 尝试在 Spring Boot 中仍然生成表
- python - Python使用PYQT5中的PrinterDialog将PIL图像发送到打印机-问题PyQT5窗口关闭
- python - 类型错误:oauth_callback() 缺少 1 个必需的位置参数:'self'
- blockchain - 使用区块链保护照片所有权
- java - Spring Boot + Oauth 2 单点登录 ridirect uri 不当行为
- kotlin - Kotlin - 从列表中删除一个元素时并让
- javascript - TypeError:断开连接时无法读取未定义的属性“id”