问题标签 [rijndaelmanaged]

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 回答
1730 浏览

rijndaelmanaged - Rijndael 托管:明文长度检测

我正在花一些时间学习如何在 .NET 中使用 RijndaelManaged 库,并开发了以下函数来测试加密文本,并从 MSDN 库中稍作修改:

这是我调用 encryptBytesToBytes_AES() 的实际代码:

但是,我收到一个异常,swEncrypt.Write(plainText)指出“要加密的数据长度无效”。

但是,我知道我的密钥、iv 和明文的大小是 16 字节 == 128 位 == aesAlg.BlockSize。 为什么会抛出这个异常? 是因为 StreamWriter 正在尝试创建一个字符串(表面上使用某种编码)并且它不喜欢 &H0 作为一个值吗?


编辑:我想我需要想出一种新的方法来加密字节数组,而不是使用 StreamWriter。MSDN 页面上的一个 gander显示这将首先进行某种字符串转换,这是我不想要的。有任何想法吗?

0 投票
2 回答
22813 浏览

c# - 如何在 c# 中使用 AES 算法解密字符串?

我有一个来自我们一位客户的加密字符串。
该字符串是使用 Java 中的 AES 方法加密的。

我唯一拥有的是密钥:“xxxxxxxxxxxxxxxxxxxxxxxx”(24 个字符)和加密文本:“56e84e9f6344826bcfa439cda09e5e96”(32 个字符)。(这真的是我唯一的数据)

我似乎找不到解密这个字符串的方法。

谁能给我一个工作的例子。

0 投票
1 回答
982 浏览

c# - 保存大量独立文件时如何在 C# 中正确调用 RijndaelAlg.CreateEncryptor

在我的情况下,我有许多文件将存储在服务器上。这些文件中的每一个都是由我正在编写的 C# 应用程序创建的。

背景: 对于这个应用程序,加密所需的时间并不重要,文件往往很小,而且我们有大量的 CPU 周期可用(客户端是唯一加密或解密数据的计算机)。

每个文件都不相关,我需要保护内容不被系统管理员或任何持有硬盘的人窥探(假设是坏人)

我的理解是 RijndaelAlg 是这种操作的可靠算法?假设这是正确的信息如何正确使用 RijndaelAlg.CreateEncryptor 函数?

我想要的可用性是让我的用户输入密码,假设密码是一个好的密码。

我的问题是

  1. 如何最好地将用户输入的字符串(C#'字符串)转换为字节 []?我假设我应该散列来解决每个其他字符都有 0 的问题?进行这种转换的最佳方法是什么?

  2. 我用什么做静脉输液?我的理解是这是一个应该填充的值(即使 MSDN 说可以传递“null”)。这个值我用什么?请记住我的情况,我有一堆需要独立解密的独立文件。

    如果 IV 是众所周知的,这是一个问题吗?(我可以使用文件名的哈希,因为它是唯一值)

  3. 有没有比 RijndaelAlg 更好的算法来使用相同的密码加密许多独立文件?

0 投票
3 回答
5711 浏览

.net - 如何检查数据是否已经加密

我在我当前的项目中使用 RijndaelManaged 来加密数据,有什么方法可以检查数据是否已经加密,所以我最终不会加密它两次?

0 投票
3 回答
7360 浏览

c# - 对大文件使用 Rijndael 加密

我处于需要安全地加密/解密长度为 n 的文件的情况,理想情况下使用 Rijndael,但绝对是 256 位加密。

我以前玩过加密,并且非常高兴地加密/解密字符串和字节数组。但是,因为我不知道文件的大小(并且有问题的文件可能非常大(~2.5gb)是非常可行的,所以我不能将它们加载到字节数组中并在其中对它们进行编码/解密一个单一的界限,就像我以前一样。

因此,在 Google 上阅读了一番之后,我知道答案是分块加密和解密文件,因此我生成了以下代码:

这一切对我来说“看起来”都很好,但可悲的是看起来似乎是骗人的!

加密工作没有错误,但在解密期间,“cryptoStream.Close()”方法抛出以下异常:

System.Security.Cryptography.CryptographicException 未处理 Message="填充无效,无法删除。"
Source="mscorlib" StackTrace:在 System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) 在 System.Security.Cryptography .RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) at System.Security.Cryptography.CryptoStream.FlushFinalBlock() at System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing) at System.IO.Stream.Close ()

似乎未加密的文件大小与预期的文件大小不匹配(范围从大约 8 个字节到大约 60 个字节)

我通过更改 RijndaelManaged 对象创建行以包含填充类型来“修复”异常,如下所示:

但是文件大小仍然不匹配,并且可以预见的是,新加密的文件是胡扯!

我承认我现在在加密/解密方面超出了我的舒适区,这可能是一个新手错误 - 但我无法发现它!

任何有关解决此问题的帮助将不胜感激!

0 投票
1 回答
2721 浏览

c# - 加密文件大小的计算与真实大小不匹配

我需要计算使用 Rijndael 加密的文件的大小。

根据本网站和谷歌上的其他答案,以下是计算加密数据长度的正确方法:

在我的实例中,未加密的文件长度为 5,101,972 字节,我使用的是 128 位加密密钥,块大小为 16 字节。因此,方程为:

给出一个长度为 5,101,984 字节的加密文件

但是,加密后我的文件大小为 5,242,896,大小相差 140,912 字节!

现在..我显然做错了什么,但我无法弄清楚它是什么。下面是我的加解密测试代码,以及计算加密大小的方法:

注意:在开始的计算中,我不包括我自己在加密文件开头用于存储原始文件长度的额外 24 个字节,以及 IV...我知道这一点,但没有想要使方程式变得不必要地复杂化。

0 投票
2 回答
6109 浏览

asp.net - 将序列化的 XML 写入字符串并在浏览器中显示

我有一个需要作为加密 XML 字符串发送的序列化对象。我能够将序列化对象保存到格式良好的 XML 文件中,但这不是我想要的。我已经让 Rijndael 加密/解密为示例字符串工作。

我希望能够在加密之前在浏览器中显示 XML 字符串,以测试是否将正确的加密字符串发送到另一台机器上的解密方法。

我已经对此进行了一周的讨论,并查看了关于 SO 的其他答案,例如: 如何在 ASP.NET 中返回 XML?

谁能告诉我在浏览器中将生成的 XML 显示为字符串的正确语法?

[更新] 这是我试图呈现 XML 的内容:

[更新 2]

如果我删除“text/xml”内容类型,我会在查看源代码时得到以下信息(这是否正确?):

[更新 3]

工作版本:

0 投票
2 回答
3191 浏览

c# - 使用 AES 的 C# 私有/公共加密

我试图弄清楚如何制作 AES 加密的公钥/私钥。我希望能够像这样使用它:

我怎样才能实现这样的事情?我见过公共/私人加密,但我见过的所有例子似乎都使用 RSA 加密。我想使用 AES。这可能吗?

0 投票
2 回答
5284 浏览

vb.net - 如何使用 RijndaelManaged 和 PKCS5 填充加密 vb.net 中的字符串?

我使用以下代码来初始化加密...

要求是使用PKCS5。vb.net 中的填充模式仅包括

  • ANSIX923
  • ISO10126
  • 没有任何
  • PKCS7

所以我认为PKCS5没有方法。有什么方法可以添加,还是需要我自己写一个加密方法?如果是这样 - 我该怎么写?是否有可靠的 DLL 支持它?

0 投票
2 回答
1184 浏览

c# - 使用crypto c# 4.0时如何生成相同的密钥

嗨,我正在尝试加密和解密字符串值...我是通过使用手动密钥来实现的...

我创建了 key 和 iv 喜欢

但我想动态生成相同的密钥......我的意思是我如何动态生成_salt......