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

c# - 加密和解密文本的安全方法?

我使用 CryptoStream 类来加密文本。如果我想解密它,我必须知道密钥和iv,这样我才能取回原始文本,但是我应该把它们保存在哪里,这样它们就不会被盗了?

使用作弊引擎等工具,您可以从其他程序的 RAM 中读取值,当我将 key/iv 保存在变量中时,您也可以读取它们。有没有办法防止这种情况?有没有办法将解密的文本立即保存在 SecureString 中?所以它永远不会保存为纯字符串?

(我对与 c# 相关的安全性一无所知。如果有人可以推荐速成课程或书籍,我将不胜感激!)

0 投票
0 回答
1028 浏览

xml - 使用 XMLReader 和 Stream 对象读取 XML

简单地说,我在将Stream对象传递给XMLReader对象的Create( Stream )函数时遇到了问题。

以下是我正在创建的应用程序中的一段代码,用于读取本地存储的加密和未加密 XML 文件。

使用流时,在ReadXML函数中流的read方法的前几次迭代中出现以下异常。

  1. System.Xml.XmlException:有多个根元素。第 2 行,位置 26。在 System.Xml.XmlTextReaderImpl.Throw(String res, String arg) 在 System.Xml.XmlTextReaderImpl.ParseDocumentContent() 在 System.Xml.XmlTextReaderImpl 的 System.Xml.XmlTextReaderImpl.Throw(Exception e)。读()
  2. System.Xml.XmlException:根级别的数据无效。第 1 行,位置 1。在 System.Xml.XmlTextReaderImpl.Throw(String res, String arg) 在 System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace() 在 System.Xml.XmlTextReaderImpl 的 System.Xml.XmlTextReaderImpl.Throw(Exception e)。 ParseDocumentContent() 在 System.Xml.XmlTextReaderImpl.Read()

如果我只是将 XML 解密为纯文本并将其写入文件,我可以使用XMLTextReader并将解密文件的路径传递给构造函数来读取 XML 文件就好了。

我知道我的 XML 文件格式正确,因为XMLTextReader可以在仅传递文件路径时毫无问题地解析它。作为参考,这是我的 XML 文件的快照。

我也知道ReadXML方法可以正常工作,原因与上述相同。

作为参考,我的ReadXML方法如下所示...

谁能解释为什么用Stream对象创建XMLReader会给我这些异常?它与Stream开始读取的位置有关吗?

在此先感谢您的帮助!

0 投票
1 回答
1542 浏览

c# - DeflateStream / GZipStream 到 CryptoStream,反之亦然

我想使用以下简单代码一次性压缩和加密文件:

以下行将加密和压缩文件恢复为原始文件:

这也适用于 GZipStream。

0 投票
1 回答
474 浏览

c# - 如何从cryptoStream readByte()中的任意索引(偏移量)开始

我正在使用下面的代码来加密和解密文件:

// 加密

// 解密

它运行良好,没有任何问题!

由于某些原因,我在加密文件的第一个添加了 10 个字节!实际上我已经创建了一个 10 字节的文件(文件大小正好是 10 字节),然后我将加密文件附加到这个文件中。

请注意,10 字节文件未加密,是使用简单文件流创建的,可以在记事本中读取。

现在在解密代码中,我怎样才能消除前 10 个字节并解密文件中的剩余数据?

我尝试调用 ReadByte() 10 次,然后转到 WHILE 部分并解密文件,但它不起作用,并且出现长度无效异常。

提前致谢。

0 投票
1 回答
656 浏览

c# - 使用 BinaryFormatter 对加密数据进行反序列化问题

这是我的代码:

Key 和 iv 都是长度为 8 的静态字节数组,我将其用于测试目的。出现错误如下:

二进制流“178”不包含有效的 BinaryHeader。可能的原因是无效的流或序列化和反序列化之间的对象版本更改

任何帮助深表感谢!

0 投票
3 回答
771 浏览

c# - 加密的 NetworkStream 挂在 ReadLine()

我正在学习如何使用下面的简单示例加密网络流。在没有加密的情况下,这个例子工作得很好,但是现在我添加了 CryptoStreams,在客户端写入消息并刷新后,服务器挂在“var data = reader.ReadLine()”上。

我很确定我错过了一些非常简单的东西。首先想到的是加密会扰乱新行字符的发送,导致服务器在等待分隔符时挂起,但我无法发现问题。

任何帮助,将不胜感激。

0 投票
1 回答
50 浏览

.net - 请问我怎样才能从 CryptoStream 返回解码的字节而不是文本

请我如何在以下代码段中返回解码的字节而不是文本:

我在下面的尝试失败了

0 投票
1 回答
1044 浏览

asp.net - 未经检查的返回值导致意外的状态和条件

我已经在互联网上搜索了一个多小时,只能找到我最新的扫描结果的客户端讨论。我收到的是使用 Read() 方法的方法,因为 Read() 忽略返回的值可能导致程序忽略意外状态和条件发现。如果有人可以详细解释,并且有可能推荐修复方法,那就太好了。功能如下:

方法中的违规代码行:

调用方法:

0 投票
1 回答
1761 浏览

c# - 将数据附加到加密文件

我想使用 CryptoStream 将数据附加到已经加密的文件(AES、CBC 模式、填充 PKCS#7)而不读取和写入整个文件。

例子:

旧内容:"Hello world..."

新内容:"Hello world, with appended text"

当然,我必须读取单个数据块,然后将其附加到已经存在的块中。在上面提到的示例中,我必须读取第一个块中存在的字节数(14 个字节)并将两个字节附加到第一个块,然后写入其余的附加文本

我面临的一个问题是我无法读取数据块中的字节数。有没有办法找出存在的字节数(在示例中为 14)?

此外,我被卡住了,因为 CryptoStreamMode 只有读写成员,但没有更新。

有没有办法使用 CryptoStream 完成我想要的功能?

0 投票
2 回答
14910 浏览

c# - 将 CryptoStream 解密为 MemoryStream

我已经编写了一个过程,其中文件被加密并上传到 Azure,然后必须解密下载过程,这会失败并出现“填充无效且无法删除”错误或“要解密的数据长度为无效的。” 错误。

我在网上尝试了许多解决方案,包括C# Decrypting mp3 file using RijndaelManaged 和 CryptoStream,但它们似乎都不起作用,我最终只是在这两个错误之间来回跳动。加密过程使用与解密相同的密钥/IV 对,并且由于它会解密流的一部分,我觉得它工作正常 - 它最终会因上述错误而死亡。

这是我的代码,有什么想法吗?请注意,这三个变体(cryptoStream.CopyTo(decryptedStream)do {}while没有一起运行 - 它们在这里显示我已经尝试过的选项,所有这些选项都失败了。

提到的评论之一想知道是什么ConvertToByteArray,它只是一个简单的扩展方法:

代码从来没有达到这一点——它在我达到这一点之前就死了。