问题标签 [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 回答
1750 浏览

c# - CryptoStream 实例关闭时抛出异常

我有一个使用 RijndaelManaged Cipher 的 DecryptString 函数。它在 99.999% 的时间都可以工作,但偶尔会引发“IndexOutOfRangeException”异常,并显示“索引超出数组范围”的消息。当它试图关闭 finally 块中的 cryptoStream 时。

当它停止工作时,它将停止工作20分钟左右,然后重新开始工作,没有明显的解释。我确实有一个线索是它只是

0 投票
1 回答
1802 浏览

c# - 加密流:读取数据错误

我得到了这个(我也试过 crStream.CopyTo(ms)):

Data = Stream 并包含一个二进制序列化类

当我运行它时出现以下异常:“流不支持阅读。”

我想要完成的只是加密来自流的数据。所以我有一个传入流,我想加密该数据并将其放入内存流中。然后将其压缩并保存到文件中。

0 投票
1 回答
182 浏览

.net - 从末尾截断未知长度x字节的流?(。网)

我需要读取一个长度未知的流,不包括最后 20 个字节(哈希数据)。设置大致是:

源流(带有最后 20 个字节的 SHA1 哈希)-> SHA1 哈希流(即时计算并在流结束时与嵌入的流哈希进行比较)-> AES 解密流-> 处理数据...

我无法在处理之前缓冲整个源流,因为它可能有很多 GB,这一切都需要即时发生。源流不可搜索。目前,SHA1 流正在将最后 20 个字节读入它的缓冲区,这会破坏一切,我不知道有任何方法可以控制这种行为。

我正在考虑在 Source 和 SHA1 流之间插入一个包装流,实现一个滚动缓冲区(?),它以 4096 字节块将源流呈现给 AES 包装器,然后在 20 字节之前“伪造”流的结尾在最后一次阅读。然后将通过属性公开 20 字节哈希。

这将是最好的解决方案,我将如何实施它?

粗略的代码流程如下(来自内存,可能无法编译):

编辑:流格式如下:

0 投票
4 回答
8838 浏览

c# - “指定的初始化向量 (IV) 与此算法的块大小不匹配”使用 CryptoStream

我在使用 CryptoStream 进行文件加密时遇到了麻烦。

代码:

尝试“managed.BlockSize = 16;” 或“= 128;” 似乎不起作用,那么我该如何解决我的错误?

0 投票
1 回答
3343 浏览

java - 如何将此 C# 加密函数转换为 Java?

我需要将以下 C# 代码翻译成 Java,但是,我找不到任何与 C# 的 Rfc2898DerivedBytes 和 Rijndael 等效的 Java。

[更新]

我需要使用这个函数来加密新创建的用户的密码,并且加密的密码也应该被包括 C# 在内的其他调用者正确解密。

我按照评论和答案中列出的文档,并尝试在下面写简单的示例以快速验证。

}

但是,密文的长度是48,但实际上在C#中,看起来是这样的格式

WHUNV5xrsfETEiCwcT0M731+Ak1jibsWEodJSaBraP1cmmkS1TpGWqwt/6p/a7oy8Yq30ImZPbFF+Y0JNLa3Eu2UGuazZtuhEepUIIdaDEtA2FO0JYIj2A==

共 120 个字符。

代码有问题吗?

0 投票
2 回答
2486 浏览

c# - 无法创建要从中读取的 CryptoStream - System.NotSupportedException

解密文件的代码非常简单(三重DES加密):

它不起作用。'cs' 无效,无法从中读取。创建 CryptoStream 时有一些例外:

为什么我无法创建加密流并从中读取以及如何解决此问题?

[添加]

感谢您的回复,现在对我来说更清楚了。但是 - 仍然无法从“cs”中读取。

加密:

在其他地方定义了 iv 和 key。并且,解密 - 整个方法:

如您所见,与加密代码中的密钥和 iv 相同。但是仍然无法从“cs”流中读取 - 抛出异常。你怎么看 - 这里有什么问题?

这是我的钥匙,我用过:

0 投票
0 回答
1395 浏览

c# - AES 加密“值不能为空”

我最近一直在尝试“CryptoStream”,并遇到了通过加密和解密文本的想法。Aes 类。'命名空间:System.Security.Cryptography'

在使用两个输入参数创建成功加密文本的函数后:文本、密码

解密文本的问题发生了。

我解密文本的尝试如下:

然而; 看来我将内存流转换为字符串然后返回的方式无效,因为我收到以下错误:错误:值不能为空\n参数名称:inputBuffer

错误发生在使用 (MemoryStream MS = new MemoryStream(Convert.FromBase64String(EncryptedTxt)))

如何将 MemoryStream 转换为字符串并返回?

提前致谢 :-)

0 投票
1 回答
779 浏览

c# - 此代码有什么替代方法可以知道字节数吗?

好的,所以我有这个用于解密文件的代码

现在我遇到了问题,我无法确定字节长度!我试过了

但它说流不支持寻找(类似的东西)我也尝试通过计算文件的字节数

但它说该文件正在使用中...由于 FileStream fsCrypt确实在使用中

与此同时,我cs.Length用一些大整数替换了它以使其工作..比如 1000000..不会导致任何异常的最大整数..它确实以这种方式工作。

0 投票
1 回答
395 浏览

c# - 加密流使用不当

我正在尝试在我的客户端 - 服务器应用程序上实现加密,但由于我实现了它,我无法在应用程序之间进行通信。

服务器:

客户:

我的实施有什么问题吗?特别是在StreamWriterStreamReader零件上。还是其他地方的问题?

0 投票
3 回答
1862 浏览

c# - 加密数据 (AES) 的大小错误

我需要执行字节[]的加密数组。我使用了 Microsoft 上提供的示例。不幸的是,加密数据被截断为 16 的倍数。如果在数据示例中我将添加 8 倍字节 0,则数据将被正确加密。填充已设置,但我没有看到任何可以更改的内容。如何解决这个问题,数据不被截断。