- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我试图将 CryptoStream 与 AWS .NET SDK 一起使用,但失败了,因为 CryptoStream 不支持搜索。我在某处阅读了内容长度已知的内容,我们应该能够将这些功能添加到 CryptoStream。我想知道该怎么做;任何示例代码也很有用。
我有一个这样的方法,它通过 FieStream 传递并返回 cryptoStream。我将返回的 Stream 对象分配给 AWS SDK PutObjectRequest 对象的 InputStream。
public static Stream GetEncryptStream(Stream existingStream,
SymmetricAlgorithm cryptoServiceProvider,
string encryptionKey, string encryptionIV)
{
Stream existingStream = this.dataStream;
cryptoServiceProvider.Key = ASCIIEncoding.ASCII.GetBytes(encryptionKey);
cryptoServiceProvider.IV = ASCIIEncoding.ASCII.GetBytes(encryptionIV);
CryptoStream cryptoStream = new CryptoStream(existingStream,
cryptoServiceProvider.CreateEncryptor(), CryptoStreamMode.Read);
return cryptoStream ;
}
最佳答案
通常在加密的情况下,输入字节和输出字节之间没有 1:1 的映射,因此为了向后(特别是)寻求它必须做很多工作 - 也许甚至回到开始并向前处理数据以消耗来自解密流的 [n] 个字节。即使它知道每个字节映射到的位置,加密的状态也取决于它之前的数据(它不是解码器环;p),所以再次 - 它要么必须从头开始读取(并且重置回初始化向量),否则它必须跟踪位置和加密状态的快照,并返回到最近的快照,然后向前走。大量工作和存储。
这也适用于相对于任一端的搜索。
从当前位置向前移动并不会太糟糕,但是您必须再次处理数据 - 而不仅仅是跳转基本流的位置。
没有一个好的方法来实现大多数消费者可以使用的 - 通常如果你从 CanSeek
得到一个 true
这意味着“随机访问”,但在这种情况下效率不高。
作为解决方法——考虑将解密数据复制到MemoryStream
或文件中;然后您可以以随机访问的方式访问完全解密的数据。
关于c# - 如何向 CryptoStream 添加查找和定位功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5026409/
我正在为 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
我是一名优秀的程序员,十分优秀!