问题标签 [cryptostream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
333 浏览

vb.net - FlushFinalBlock 关闭应用程序

CryptoStream用于在我的应用程序中解密加密文本。但是,当我从流中刷新最后一个块或关闭它(应该这样做)时,应用程序将关闭。

没有错误信息,什么都没有。即使在调试模式下,它也只是结束。在 Windows 事件查看器中,我得到.NET Runtime version 2.0.50727.5485 - Fatal Execution Engine Error (000007FEECCD600A) (80131506). 我的目标是使用该应用程序的框架 2.0。

这是我的代码:

我尝试用 替换decStream.FlushFinalBlock()decStream.Close()得到了同样的结果。当我将其注释掉时,它返回的字符串仅包含 8 个字符的倍数。卡在最后一个区块中的剩余部分消失了。

所以我试图弄清楚为什么抓住最后一个流会关闭应用程序。我在源位置放了一个断点并使用 F11 进入它,但关闭是立即的。

我在 Windows 7 Professional 64 位上使用 VS 2008。

0 投票
1 回答
946 浏览

c# - 如何在 C# 中的加密流写入操作上添加进度条

我一直在开发一个程序来加密和解密文件作为项目的一部分。该程序本身运行良好,但是当我尝试向其添加进度条以显示加密/解密过程的进度时出现问题。进度条的进度非常好,达到 85-90% 左右,然后它会抛出一个错误,指出该值已超过最大限制。此外,进度条的速度太慢,即使我正在加密一个 16KB 的文件,也需要大约 15-20 秒才能达到错误情况,而在没有任何进度条的情况下几乎不需要时间。我尝试使用后台工作人员来实现进度条。谁能告诉我如何让进度条在我的程序上工作?

这是我的加密过程代码:

Prompt 是我创建的一个单独的类,用于生成要求用户输入密码的动态表单。它看起来很像任何密码提示,有两个输入和验证密码的字段和一个显示密码复选框。ifile 是输入文件,而 ofile 是输出文件。

更新:这是我尝试使用 backgroundworker 的代码。进度条现在似乎可以工作,但加密速度大大降低,并且加密过程在进度条填满之前完成,即在进度条填满之前显示“加密完成”消息。此外,当我尝试为解密做同样的事情时,我得到一个异常,说加密流不支持搜索。有任何想法吗?

0 投票
1 回答
513 浏览

c# - 将明文字节添加到 CryptoStream 的开头?

我有一个这样定义的接口:

我正在用 实现这个接口AesCryptoServiceProvider,但这里显然存在问题。IV(初始化向量)不会在界面上返回......所以加密某些东西可以正常工作,只要我不想再次解密它。Decrypt() 方法根本没有机会工作。

我想要做的是在流的开头以明文形式包含 IV,然后将其添加CryptoStream到其中,因此它本质上是带有“标题”的加密数据,我可以将其剥离并用于解密流。

那么......我该怎么做呢?我可以很容易地创建 CryptoStream,但看起来这会加密 IV,这有点违背了目的。我可以将其加载CryptoStream到内存中,预先添加 IV,然后将其作为 MemoryStream 流式传输,但这确实效率低下,并且会在大流上死掉。

对此有什么好的、安全的、可扩展的做法?

0 投票
1 回答
424 浏览

c# - 在同一个 CryptoStream 上使用 BinaryReader 和 BinaryWriter 时如何避免超时?

我有一个程序使用BinaryReaderBinaryWriter通过网络发送stringintbyte [] 消息。

消息的顺序和内容对于服务器和客户端的执行流程都很重要,但持续时间永远不会长。

现在我正在尝试加密所有内容。

这是我在实际代码周围的新包装器:

这个例子是 boo 代码,但在这个例子中它应该直观地等同于 C#。

现在发生的情况是,服务器正确地获得了第一条加密消息enc_reader.ReadString(),并以enc_writer.Write("Accepted"). 但客户永远得不到答案。

我已经测试了消息的顺序是否重要,并且确实如此。如果我从服务器发送一个字符串开始,那么客户端会得到它,但是如果我继续发送消息,我很快就会遇到同样的情况。

我有一些想法, CryptoStream 可能是导致无法与BinaryReader / BinaryWriter正常合作的原因,但我不知道如何以一种好的方式解决这个混乱。

我的服务器有很多只需要BinaryReaderBinaryWriter的函数,如果它们能像以前一样工作,那就太方便了。

编辑:

我还在这里的一个小型 C# 项目中复制了这种情况,使用上面提到的 AES 和 CTR 模式的实现。

0 投票
1 回答
857 浏览

c# - CryptoStream 错误 填充无效且无法移除

我的代码有问题。函数 Decryptor 中出现问题。

FlushFinalBlock 抛出“填充无效,无法移除”

在函数 Decryptor 中,当行 cryptoStream.Write(myData, 0, myData.Length); 时,我得到长度为 6048 的 myData 完成后我在 memoryStream 中得到长度 6032,然后是 cryptoStream.FlushFinalBlock(); 抛出错误“填充无效,无法删除。”

如您所见,我正在使用 Padding = PaddingMode.PKCS7;

服务器上使用加密器,数据通过UDP发送。客户端使用解密器而不是解密数据。代码适用于大多数数据包,可以说它可以工作几个小时,但之后我在 Flushing 上遇到错误。

0 投票
1 回答
109 浏览

c# - 在 Rijndael 类中设置值时程序崩溃

我目前有以下代码。

我正在byte array从硬编码的随机生成一个string

现在我注意到在设置Rijndael类时,应用程序在设置键值时崩溃。关于设置键值时为什么会崩溃的任何建议。

现在上面的方法被调用如下

在附加信息中指出

附加信息:指定的密钥不是此算法的有效大小。

在那种情况下,我可以使用什么字符串才能工作?为什么这个字符串不起作用?

0 投票
1 回答
855 浏览

c# - 可用于加密流加密的最大可靠缓冲区大小?

我想在我的项目中使用这种加密方法。但是,根据示例,它一次读取、加密然后写入一个字节,这似乎效率低下。从CryptoStream 类来看,有一些方法可以在流中读取和写入缓冲区。我要问的是一次加密/解密多个字节是否安全/可靠,如果是,那么这样做的最大可靠缓冲区大小是多少。

0 投票
1 回答
449 浏览

c# - CryptoStream ReportProgress 进度条 C#

所以我试图加密一些文件并且它工作正常,但是当我尝试包含一个进度条来显示大文件的距离时,比如一个 100mb-1gb 的文件,性能被削减并且非常慢。我假设它是因为 ReportProgress 被快速调用,所以我在秒表中添加了仅每 2 秒更新一次,但这导致它工作得更快(在不调用 reportProgress 的情况下仍然没有那么快),但有时也不会更新进度条一点也不。

一个例子是,backgroundWorker1.ReportProgress((int) fsIn.Length);删除行后,文件可能需要 5 秒,但添加后,最终需要 20 秒。

我能做些什么来改善这一点并使其更快?

0 投票
1 回答
755 浏览

c# - 使用 CryptoStream 读取和写入 TCP 套接字

我正在尝试加密通过 TCP 连接发送的数据,但是,我没有通过我的CryptoStream.

这是我设置流的类:

密钥和初始向量:

在我的测试客户端程序中,我调用

在我的服务器上,我调用:

然而,应用程序阻塞communication.Receive并且永远不会完成。我在这里做错了什么?我觉得它真的很简单..

0 投票
1 回答
294 浏览

java - 将加密算法从 C# 转换为 Java

我想在java中转换以下算法,我已经搜索了库并且什么都没有。请帮忙。?