问题标签 [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.
c# - 加密和解密文本的安全方法?
我使用 CryptoStream 类来加密文本。如果我想解密它,我必须知道密钥和iv,这样我才能取回原始文本,但是我应该把它们保存在哪里,这样它们就不会被盗了?
使用作弊引擎等工具,您可以从其他程序的 RAM 中读取值,当我将 key/iv 保存在变量中时,您也可以读取它们。有没有办法防止这种情况?有没有办法将解密的文本立即保存在 SecureString 中?所以它永远不会保存为纯字符串?
(我对与 c# 相关的安全性一无所知。如果有人可以推荐速成课程或书籍,我将不胜感激!)
xml - 使用 XMLReader 和 Stream 对象读取 XML
简单地说,我在将Stream对象传递给XMLReader对象的Create( Stream )函数时遇到了问题。
以下是我正在创建的应用程序中的一段代码,用于读取本地存储的加密和未加密 XML 文件。
使用流时,在ReadXML函数中流的read方法的前几次迭代中出现以下异常。
- 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)。读()
- 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开始读取的位置有关吗?
在此先感谢您的帮助!
c# - DeflateStream / GZipStream 到 CryptoStream,反之亦然
我想使用以下简单代码一次性压缩和加密文件:
以下行将加密和压缩文件恢复为原始文件:
这也适用于 GZipStream。
c# - 如何从cryptoStream readByte()中的任意索引(偏移量)开始
我正在使用下面的代码来加密和解密文件:
// 加密
// 解密
它运行良好,没有任何问题!
由于某些原因,我在加密文件的第一个添加了 10 个字节!实际上我已经创建了一个 10 字节的文件(文件大小正好是 10 字节),然后我将加密文件附加到这个文件中。
请注意,10 字节文件未加密,是使用简单文件流创建的,可以在记事本中读取。
现在在解密代码中,我怎样才能消除前 10 个字节并解密文件中的剩余数据?
我尝试调用 ReadByte() 10 次,然后转到 WHILE 部分并解密文件,但它不起作用,并且出现长度无效异常。
提前致谢。
c# - 使用 BinaryFormatter 对加密数据进行反序列化问题
这是我的代码:
Key 和 iv 都是长度为 8 的静态字节数组,我将其用于测试目的。出现错误如下:
二进制流“178”不包含有效的 BinaryHeader。可能的原因是无效的流或序列化和反序列化之间的对象版本更改
任何帮助深表感谢!
c# - 加密的 NetworkStream 挂在 ReadLine()
我正在学习如何使用下面的简单示例加密网络流。在没有加密的情况下,这个例子工作得很好,但是现在我添加了 CryptoStreams,在客户端写入消息并刷新后,服务器挂在“var data = reader.ReadLine()”上。
我很确定我错过了一些非常简单的东西。首先想到的是加密会扰乱新行字符的发送,导致服务器在等待分隔符时挂起,但我无法发现问题。
任何帮助,将不胜感激。
.net - 请问我怎样才能从 CryptoStream 返回解码的字节而不是文本
请我如何在以下代码段中返回解码的字节而不是文本:
我在下面的尝试失败了
asp.net - 未经检查的返回值导致意外的状态和条件
我已经在互联网上搜索了一个多小时,只能找到我最新的扫描结果的客户端讨论。我收到的是使用 Read() 方法的方法,因为 Read() 忽略返回的值可能导致程序忽略意外状态和条件发现。如果有人可以详细解释,并且有可能推荐修复方法,那就太好了。功能如下:
方法中的违规代码行:
调用方法:
c# - 将数据附加到加密文件
我想使用 CryptoStream 将数据附加到已经加密的文件(AES、CBC 模式、填充 PKCS#7)而不读取和写入整个文件。
例子:
旧内容:"Hello world..."
新内容:"Hello world, with appended text"
当然,我必须读取单个数据块,然后将其附加到已经存在的块中。在上面提到的示例中,我必须读取第一个块中存在的字节数(14 个字节)并将两个字节附加到第一个块,然后写入其余的附加文本
我面临的一个问题是我无法读取数据块中的字节数。有没有办法找出存在的字节数(在示例中为 14)?
此外,我被卡住了,因为 CryptoStreamMode 只有读写成员,但没有更新。
有没有办法使用 CryptoStream 完成我想要的功能?
c# - 将 CryptoStream 解密为 MemoryStream
我已经编写了一个过程,其中文件被加密并上传到 Azure,然后必须解密下载过程,这会失败并出现“填充无效且无法删除”错误或“要解密的数据长度为无效的。” 错误。
我在网上尝试了许多解决方案,包括C# Decrypting mp3 file using RijndaelManaged 和 CryptoStream,但它们似乎都不起作用,我最终只是在这两个错误之间来回跳动。加密过程使用与解密相同的密钥/IV 对,并且由于它会解密流的一部分,我觉得它工作正常 - 它最终会因上述错误而死亡。
这是我的代码,有什么想法吗?请注意,这三个变体(cryptoStream.CopyTo(decryptedStream)
和do {}
)while
没有一起运行 - 它们在这里显示我已经尝试过的选项,所有这些选项都失败了。
提到的评论之一想知道是什么ConvertToByteArray
,它只是一个简单的扩展方法:
代码从来没有达到这一点——它在我达到这一点之前就死了。