问题标签 [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 投票
3 回答
2013 浏览

c# - .NET 的 CryptoStream 的寻找替代品?

有人知道.NET 的 CryptoStream 的可寻找替代品吗?

如果替代方案仅在“读取”模式下支持 Seek 或者仅限于例如 AES256,则可以。

0 投票
1 回答
1435 浏览

c# - C# CryptoStream 结果不符合预期

我试图理解为什么下面的代码导致加密的字节数组是 16 个字节(如果plainText长度为 8 个字节)。我预计结果的长度也是 8 个字节?

0 投票
2 回答
232 浏览

c# - 与 C# 中的一个文件关联的两个 CryptoStream

我想创建一个文件“myFile”,它使用某个密钥加密第一部分,使用某个密钥加密最后一部分。到目前为止,我有这样的事情:

我想使用 cs1 写入文件的第一部分,然后使用 cs2 写入文件的第一部分,如下所示:

此过程没有错误,但第二个 CryptoStream (cs2) 实际上并未写入文件。有谁知道为什么会发生这种情况?有一个更好的方法吗?谢谢

编辑:关闭 CryptoStream 似乎也关闭了 myFile,但是如果我关闭然后重新打开然后启动第二个 CryptoStream,这似乎可以工作,尽管它不像我希望的那样干净。谢谢您的帮助!

0 投票
2 回答
611 浏览

.net - cryptStream.FlushFinalBlock() 在 64 位操作系统上杀死我的程序

我有一个部署在多台 Windows7 32 位机器上的程序。它在所有这些上都完美运行。

我刚刚将它安装在 Windows7 64 位机器上,现在它在执行 cryptStream.FlushFinalBlock() 后立即崩溃,并出现以下错误:

程序“[2972] Billing.vshost.exe: Managed (v2.0.50727)”已退出,代码为 -1073740940 (0xc0000374)。

我还尝试在我目前安装的唯一其他操作系统 Vista 64bit 上运行它,但我遇到了完全相同的问题。这是在 try 块内,但没有被捕获。它只是立即失败。CryptoStream 和 64 位操作系统是否存在已知的兼容性问题,或者这可能是其他问题?关于如何解决它的任何想法?

0 投票
7 回答
10375 浏览

c# - 使用 C# CryptoStream 的 Java 等效项加密和解密字符串

我正在为移动平台操作系统开发 Java 应用程序。

我在 C# WPF 中为 Windows 环境开发了一个应用程序。我正在使用加密流以使用以下代码加密和解密字符串。下面显示的代码只是加密

加密字符串存储在在线数据库中。我需要做的是让 java 应用程序能够从数据库中读取字符串并使用来自 C# 应用程序的相同加密密钥解密字符串。

谢谢你的帮助。

0 投票
3 回答
11249 浏览

c# - 解密加密文件时出现 C#“Bad Data”异常

嘿,我对加密和解密非常陌生,老实说,甚至是 c# 语言。基本上,我有一个“保存”日志并加密文本文件的 tcp 聊天服务器。这就是我加密的方式(基于 MSDN 示例):

该方法成功完全加密文件。这是我的解密方法:

当我检查加密流对象时,它说它抛出了一个异常,“流不支持搜索”。

任何帮助将不胜感激!

0 投票
1 回答
797 浏览

.net - .NET CryptoStream 在 Dispose() 中读取密文末尾并炸毁

我对 .NETCryptoStream类的一个怪癖感到困惑:它的Dispose()方法读取密文末尾的内容,寻找它不应该的填充,CryprographicException结果抛出 a。

下面的 C# 程序加密了几个字节,调整了密文数组的大小,以便在密文结束后有更多(无意义的)字节,然后尝试对其进行解密。重点是:

  • 密文为 8 个字节,一个 3DES 密文块。由于我只将 6 个字节写入CryptoStream它并且它正在使用PaddingMode.PKCS7(默认值),因此块中剩余的两个字节用填充值 0x02 填充。
  • 密文数组随后被调整为 16 字节,两个 3DES 块。第二个块是未初始化的废话,不是有效的密码输出。
  • CryptoStream解密时,我从;中读取了 6 个字节。我不是要求它解密成废话部分,我也不是依靠它识别填充来确定它何时到达明文的末尾。

问题是,当调用 decrypting 时(自动在块的末尾CryptoStream),我得到一个带有消息“Bad Data”的消息。它的堆栈跟踪显示它正在执行,并且所有 16 个字节都已从 中消耗,而不仅仅是对应于实际加密数据的 8 个字节。Dispose()usingCryptographicExceptionCryptoStream.FlushFinalBlock()ciphertextStream

如果我删除调整ciphertext数组大小的行,则程序可以正常工作。如果我tripleDes.Padding = PaddingMode.None在解密之前这样做,程序也可以正常工作——但这​​基本上使填充字节成为明文的一部分,所以我宁愿不这样做。显然,问题与填充有关;据我所知,它已解密第二个块,并期望PKCS7在其末尾找到有效的样式填充。

由于我只从 读取的内容足以CryptoStream要求解密一个块,并且该块是正确填充的最终块,然后我关闭CryptoStream而不读取任何内容,为什么流认为它需要读取另一个块和寻找更多的填充?为什么它甚至试图消耗更多的输入作为它的一部分Dispose()


0 投票
1 回答
1972 浏览

cryptostream - CryptoStream.FlushFinalBlock 抛出输入数据不是一个完整的块异常

我使用以下两种方法来加密和解密字符串:

尝试解密某些长度的字符串时会发生错误。当字符串是社会保险号(包括破折号在内的 11 个字符)时,会抛出“输入数据不是完整的块”CryptographicException。例如,如果我传入一个正好 8 个字符长的字符串,那么一切都会按预期工作。我认为 PKCS7 填充会处理各种长度。我确定我遗漏了一些简单的东西,但是经过数小时的谷歌搜索,我无法找到答案。

0 投票
4 回答
66933 浏览

vb.net - VB.Net中的简单加密/解密

我试图弄清楚如何在 VB.Net 中加密/解密字符串。

我按照此处给出的示例编写了以下代码(如下)。有一个文本框、一个“加密”按钮和一个“解密”按钮。这个想法是在文本框中输入一些东西(“like 'hello world'”),单击“加密”,然后看到加密版本出现在文本框中。然后单击“解密”应将您带回原始字符串。

但是当我尝试加密时,当我尝试“FlushFinalBlock”时出现错误。错误是:“要加密的数据长度无效”。

“解密”部分完全是在黑暗中拍摄,因为上面引用的示例仅处理加密,而不是解密。我确定这是错误的,但由于我无法“加密”工作,我还没有测试它。

谁能告诉我为什么这不起作用?

0 投票
1 回答
895 浏览

c# - 为什么我不能使用 RijndaelManaged 解密数据?

我正在开发一个像信使一样发送和接收消息的程序,我需要在发送按钮上加密消息并在收到消息时解密消息。我正在使用RijndaelManaged类和以下方法来加密/解密

以下是我如何调用以前的方法:

问题是解密加密异常时出现异常-要解密的数据长度无效,我不知道为什么?