问题标签 [rijndael]

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 投票
4 回答
13090 浏览

c# - 如何存储用于加密文件的密钥

我正在玩一个应用程序来将文件备份到“云”:) 我想在存储文件之前对其进行加密。我已经介绍了那部分,但是由于此应用程序将监视文件夹以进行更改并上传更改的文件,因此我需要存储用于加密文件的密钥。这个想法是用户提供密码并生成密钥。

目前我正在使用 .NET Framework 进行加密。我正在使用 RijndaelManaged 类来加密/解密,并使用 PasswordDeriveBytes 类来获取密钥。

但是我应该如何保留用于加密文件的密钥?我还希望程序从 Windows 开始,而不需要让用户再次输入密码。

0 投票
3 回答
1327 浏览

php - 如何将加密密钥安全地存储在 php 代码文件中

我有一个网站,用户向它提交敏感数据,然后一个 php 脚本使用 rijndael 256 加密这些敏感数据并将其存储在 mysql 数据库中

问题是我想将密钥存储在一个安全的地方,只能由 php 脚本访问,而其他任何人都看不到

0 投票
3 回答
5573 浏览

c# - 如何将此 C# Rijndael 加密转换为 PHP?

关于 SO 已经有一些有用的问题:

但是,我仍然对我的特殊情况有困难。

我尝试了各种方法,但最终得到的错误"The IV parameter must be as long as the blocksize"或文本与生成的哈希不匹配。

我对加密的了解不足以弄清楚我做错了什么。

这是php版本:

和 C# 版本:

我希望能够在一个新的基于 php 的应用程序中验证用户登录,该应用程序将与现有 C# 应用程序相同的 MySQL 数据库进行通信。我打算加密密码并将生成的哈希与存储在数据库中的哈希进行比较以进行身份​​验证。

任何指针将不胜感激。

编辑:

我意识到在 C# 函数中,PasswordDeriveBytes正在调用并传递一个字节数组作为参数,我在 PHP 版本中没有类似的参数。我发现这源于一个Codeproject 示例,并且 ASCII 中的字节数组拼写为“Ivan Medvedev”,我认为他是示例作者。不幸的是,我无法改变这一点。

0 投票
1 回答
1502 浏览

.net - RijndaelManaged Cryptostream 将文件从磁盘解密到内存中

我有一个库,它使用与下面的类代码相同的逻辑,但是当它解密文件时,它会将其解密到光盘上,并提供删除或不删除加密版本的选项。我正在尝试添加一个选项以将文件解密到内存中,以便我可以将文件捕获为 byte() 并将字节发送到服务。我显然可以将文件解密到磁盘上,读取文件流,将其转换为字节(),删除解密版本(因为我必须对磁盘上的文件进行加密)......一遍又一遍地创建删除文件,可能会导致磁盘碎片等,所以我只想将文件解密到内存中。无论如何,这成功地将文件解密为 memorystream 变量,但是当我将字节放入文件查看器时,它告诉我文件格式无法识别。

这是我到目前为止的代码:

更新:

我添加了 cryptostream.FlushFinalBlock()

这仍然不起作用......我觉得它只是没有一直阅读流到最后。

更新:

这是我的“加密”方法,使用与解密相同的 IV 和密钥方法......

最终更新:

这是成功的解密文件到内存代码:

0 投票
3 回答
414 浏览

c# - 如何在c#中为这里的加密方法编写解密方法

我能够将如下所示的加密示例放在一起,但在解密期间我得到无效数据(异常)。我应该如何解密

加密方式

解密方法

我认为问题在于这些方法中的所有编码

样本数据

纯文本 = 堆栈溢出

base64encoded Key = B8Y/6doxwqU870C6jzYWhsr3hKSLokAOkkLCDiy+TS4= (应该很容易转换为字节不是吗)

base64encoded IV = NZIpD60eBmdsOFFhA2bfvw==

encryptedValue = 77+977+977+977+977+9Ce+/ve+/vQ3vv70F77+9UzHvv73vv70=

我提供相同的加密值、IV 和密钥来解密到 Stackoverflow

0 投票
1 回答
379 浏览

c# - RijndaelManaged 加密的不一致行为

我在使用 RijndaelManaged 时遇到了一个奇怪的问题。基本上我有一个新的实例,我在其中设置了 CipherMode、Padding、IV 和 Key。然后我创建另一个实例并将原始实例的以下属性的相同值分配给第二个实例:Mode、Padding、KeySize、FeedbackSize、BlockSize、IV 和 Key。

因此,将所有属性值从实例 1 复制到实例 2 后,我应该得到相同的结果,对吧?错误的!两个实例的 GetHashCode() 以某种方式不同,但如果我转储它们的属性(如上所述),那么它们都是相同的。

如果我加密长度等于块大小(16 字节,128 位)的文本字符串,那么两者都会产生相同的结果,如果输入小于 BlockSize,则加密结果不一样。

我有这个来创建初始 Rijndael 实例。

为了举例说明对字符串进行加密:

那么就这样做

我得到了 cyper1 == cypher2 和 cypher11 != cypher21 还有 rm1.GetHashCode() != rm2.GetHashCode() 但所有公共参数都是一样的!

我还转储了两个实例的所有公共属性,看看我是否遗漏了一些东西,但不是,所有值都是相同的。

0 投票
3 回答
5664 浏览

php - Delphi DEC 库 (Rijndael) 加密

我正在尝试使用DEC 3.0 库Delphi Encryption Compedium Part I)对 Delphi 7 中的数据进行加密,并通过 POST 将其发送到 PHP 脚本,在那里我使用mcrypt(RIJNDAEL_256,ECB 模式)对其进行解密。

德尔福部分:

PHP部分:

问题是 PHP 的解密不起作用,输出是乱码,与实际数据不同。

当然,DelphiKey和 PHP$Key是相同的 24 个字符的字符串。

现在我知道 DEC 3.0 已经过时且过时了,而且我不是加密专家,无法判断实施是否实际上是 Rijndael 256。也许有人可以告诉我这个实现与 PHP 的 mcrypt w/RIJNDAEL_256 有何不同。也许密钥大小不同,或者块大小不同,但无法从代码中看出这一点。这是 Cipher1.pas 的摘录:

附带问题:

我知道不推荐使用 ECB 模式,我会在 ECB 工作后立即使用 CBC。问题是,我是否还必须将 Delphi 中生成的 IV 传输到 PHP 脚本?或者知道密钥就足够了,比如欧洲央行?

0 投票
2 回答
6254 浏览

vb.net - VB.NET Rijndael 托管加密或 AES 的安全性如何?

我正在使用此代码的略微修改版本。创建任务关键型应用程序。将被加密的文件非常重要。这必须从头开始,因为还有一些其他的事情必须与此一起完成。

这有多安全?破解这个加密是不可能的吧?

非常抱歉,这是一个工作链接。http://www.codeproject.com/Articles/12092/Encrypt-Decrypt-Files-in-VB-NET-Using-Rijndael

加密和解密

我已经将主要代码从那里粘贴到这里。

0 投票
3 回答
9291 浏览

c# - Rijndael 填充或长度无效

我正在尝试使用 Rijndael 或 Aes 和下面的代码来加密/解密字符串。

//编辑:我已经根据下面Xint0的答案更改了对Convert.ToBase64String的Unicode调用。

在 cs.Write in Decrypt 方法中,我收到“填充无效且无法删除”的错误消息。

我尝试将填充设置为 PaddingMode.None 但我得到“要加密的数据长度无效”。在 Encrypt 方法中的 cs.Write 上。

我看过这些,他们所说的似乎没有任何效果。

填充无效且无法移除

填充无效,无法删除?

堆栈跟踪显示 System.Security.CryptographicException 来自 RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast)。

0 投票
1 回答
3709 浏览

php - 是否有像 PHP 一样进行 Rijndael 256 位加密的 JavaScript 库?

我一直在 PHP 中为我的 API 广泛使用 Rijndael 256 位加密,并希望将它用于我的用 JavaScript 编写的 API 包装器,但我一直无法找到与 PHP 中获得相同结果的解决方案.

PHP 的含义如下:

..以及解密变体。

我知道许多 256 位 AES 库没有得到与 PHP 使用 Rijndael 256 位加密相同的结果,因此我想知道是否有一个库能够执行 PHP 在上面的示例中所做的事情?

谢谢!