- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编辑:我发现了问题。
我的对象的构造函数正在以写入模式初始化文件流,无论我们是否要加密或解密文件。即使写入文件流在解密之前会被关闭(用于此目的的另一个文件流),它仍然会导致静默崩溃。现在它工作正常。
所以它看起来像是一个相当普通的文件访问问题。很遗憾CryptoStream
没有将其作为异常处理。
感谢您的建议 - 我会看看 ProcDump 和 WinDbg。
我刚刚创建了一个小应用程序来读取和解密本地硬盘中的文件。
Visual Studio 调试器会在没有任何消息或解释的情况下终止应用程序。当执行以下代码中的 read = crypto.ReadByte()
行时会发生这种情况。
try
{
if (file != null)
{
// the stream that was used for encryption
file.Close();
}
var provider = new DESCryptoServiceProvider();
provider.Key = Key;
provider.IV = Key;
var ict = provider.CreateDecryptor();
var bytes = new List<byte>();
using (var stream = new FileStream(fileName, FileMode.Open))
{
crypto = new CryptoStream(stream, ict, CryptoStreamMode.Read);
var decrypted = new MemoryStream();
Int32 read;
try
{
do
{
read = crypto.ReadByte(); // the application dies here
if (read != -1) bytes.Add(Convert.ToByte(read));
}
while (read != -1);
}
finally
{
// we never get here
decrypted.Close();
}
};
return ASCIIEncoding.ASCII.GetString(bytes.ToArray());
}
catch (Exception x)
{
// we never get here either
crypto.Close();
return x.Message;
}
我尝试并排除的:
没有抛出异常。我们从不输入 finally
或 catch
。我还启用了 Break when an exception is thrown
,但这没有任何区别。没有任何异常迹象。
发布应用程序 (ClickOnce) 并运行它具有相同的效果。
重新启动没有任何区别。
制作文件的副本(以防其他进程阻止访问它等)并尝试读取该副本以同样的方式失败。
如果我尝试在 Watch 窗口中评估 crypto.ReadByte()
,我将按顺序收到以下消息:
这个表达式会产生副作用,不会被求值
;
当我刷新它时:函数求值被中止
当我刷新它或等待几秒钟时:无法计算表达式。调用的对象已与其客户端断开连接。
应用终止,我们回到 Visual Studio。
这里有什么问题?
最佳答案
一些建议:
关于c# - 调试器在没有任何解释的情况下终止应用程序(在 CryptoStream.ReadByte() 调用中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7673753/
我正在为 Windows Phone 7 开发一个存储高度安全信息的项目。此数据受密码保护。如果我在 3 个其他 CryptoStreams 中加密一个 CryptoStream(总共 4 个密码流相
我有兴趣提供一个在 .Net 中使用的托管 dll,它提供经过身份验证的加密服务。该 DLL 可以在 WPF 程序或 ASP 应用程序中使用。我有几个与 Microsoft 的加密和流模型相关的问题。
我正在使用: cryptoStream.Write(buffer, 0, bytesRead); 并想要它的哈希值。如果我使用: hash.TransformBlock(buffer, 0, byte
在解密之前是否可以得到解密数据的最终长度?这是一个例子: RijndaelManaged RMCrypto = new RijndaelManaged(); RMCrypto.Padding = Pa
我正在尝试使用 RijndaelManaged 类加密纯文本,然后解密加密的字符串,最终得到相同的纯文本。 加密明文一切正常,如下所示, protected static string AES
我正在处理的 C# .NET Framework 4.5 代码应该允许我通过加密流将文本传输到另一个程序。我创建了两个简单的程序来演示我的问题。 EncryptionTestA 是服务器,意味着首先运
场景:我们有一个将要离线发布的 silverlight 5 OOB 应用程序 (DVD ROM)。此应用程序用作某些教育内容的媒体播放器。为了保护 DVD ROM 附带的视频文件,我决定用每个用户唯一
过去几天我一直在为一个问题苦思冥想:在进行公钥交换 + 登录后,我的端点切换到 Rijndael 对称加密模式来加密客户端之间的消息和服务器。 问题是,我创建了加密流并将其保持开放状态,认为这是最好的
如果我有一个 CryptoStream 我想传回给用户,天真的方法是 public Stream GetDecryptedFileStream(string inputFile, byte[] key
我试图将 CryptoStream 与 AWS .NET SDK 一起使用,但失败了,因为 CryptoStream 不支持搜索。我在某处阅读了内容长度已知的内容,我们应该能够将这些功能添加到 C
我对 .NET CryptoStream 类的一个怪癖感到困惑:它的 Dispose() 方法读取了密文的末尾以寻找填充它不应该,并因此抛出 CryprographicException。 下面的 C
我写了一个过程,其中文件被加密并上传到 Azure,然后下载过程必须被解密,这是失败的“填充无效且无法删除”错误,或“要解密的数据长度是无效的。”错误。 我在网上尝试了很多解决方案,包括 C# Dec
我正在研究使用 AesCryptoServiceProvider 解密二进制数据的过程。对于最后一步,检索解密的数据并将其作为字节数组返回,我目前正在使用以下实现: let rec streamByt
我正在尝试使用以下代码加密一些数据: public static byte[] EncryptString(byte[] input, string password) { PasswordD
有人知道 .NET 的 CryptoStream 的可寻找替代品吗? 如果替代方案仅支持“读取”模式下的搜索,或者它仅限于例如AES256. 最佳答案 按 block 加密非常安全。只是欧洲央行有问题
我有一个 CryptoStream 和一个底层 Stream。我不能使用 using block 来处理 CryptoStream,因为这也会处理我需要保持打开状态的底层 Stream。解决方案似乎只
我创建了一个MemoryStream,将它传递给CryptoStream 进行写入。我希望 CryptoStream 进行加密,并让 MemoryStream 保持打开状态以便我读取其他内容。但是一旦
编辑:我发现了问题。 我的对象的构造函数正在以写入模式初始化文件流,无论我们是否要加密或解密文件。即使写入文件流在解密之前会被关闭(用于此目的的另一个文件流),它仍然会导致静默崩溃。现在它工作正常。
我在这里有点绝望。我正在尝试将一个带有序列化对象的加密文件写入磁盘,然后检索该文件,对其进行解密并反序列化该对象。 更新:我将代码重构为: using (Stream innerStream = Fi
假设我们有一条使用 HMAC 签名的消息,然后该消息和 HMAC 被加密,然后通过 TCP 套接字发送: // endpoint info excluded TcpClient client = ne
我是一名优秀的程序员,十分优秀!