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

c# - 在 Perl 中加密文件并在 C# 中解密

我正在尝试使用 Perl 加密文本文件,然后使用用 C# 编写的不同应用程序对其进行解密。这是我的 Perl 代码:

还有我的 C# 解密代码:

我不断得到

System.Security.Cryptography.CryptographicException:要解密的数据长度无效

当我尝试一次读取几个字节的数据时,我注意到前 100 个左右的字节被正确解密,但其余的只是垃圾。

顺便说一句,我可以使用 Perl 解密加密文件:

那么我在 C# 和 Perl 上做错了什么?

编辑:我尝试遵循@munissor 的建议并更改要使用的 C# 代码

PaddingMode.Zeros

但我仍然得到同样的例外。请帮忙...

0 投票
2 回答
2580 浏览

php - PHP 服务器和 iOS 上的 AES Rijndael 有时会生成不同的密码

我正在使用 Jim Dovey 的 NSData+AESCrypt 类别和 Michael Sedlaczek (2011-02-22) 的 NSString+AESCrypt 类别。

在 PHP 上,我有一个简单的脚本:

在 ObjC 中:

我在 PHP 中更改变量 $plaintext,运行脚本并将输出密码复制并粘贴到 Objective-c 以对其进行解密。

和:

  1. “myword”给了我“+l56Ia4yyK19D2x2+oCXuw==”,我在iOS上解密并得到“myword”[OK]

  2. “早上好”给了我“5UdImsV1pQs60ovXmH74HQ==”,我在 iOS 上解密并得到“早上好”[OK]

  3. “Schröder”给了我“KqNSCE8nGsYUYVdGZ2tnMw==”,我在 iOS 上解密并得到“Schröder”[OK]
  4. “Schröder”给了我“KqNSCE8nGsYUYVdGZ2tnMw==”,我在 iOS 上解密并得到“Schröder”[OK]
  5. “很长的文本”给了我“lsa+QF3IHQnAFiOjl2Heyg==”,我在 iOS 上解密并得到“很长的文本”[OK]
  6. “非常非常非常长的文本”给了我“kl/ThEyuyUMmKSqU4/fJSzzJOyvsXrGRt5/zsnqjQww=”,我无法在 iOS 上解密它 [失败]

为什么#5 失败了?如果我尝试使用 Xcode 加密“非常非常非常长的文本”,我会得到“kl/ThEyuyUMmKSqU4/fJS90UZoJ73S4gox2uCoWoIL8=" 请注意:kl/ThEyuyUMmKSqU4/fJS == kl/ThEyuyUMmKSqU4/fJS zzJOyvsXrGRt5/zsnqjQww4!= 90UZoZoJ73S

但更进一步,在 Xcode 上加密“早上好”给我“hVq1AuR8PAXSOztK26pmMw==”,而 PHP 给“5UdImsV1pQs60ovXmH74HQ==”,但 Xcode 使用相同的密钥将两者解密为“早上好”。

请帮忙。

0 投票
1 回答
2985 浏览

delphi - DCPCrypt/Delphi 没有正确编码 Rijndael

我有 DCPCrypt 包(最新版本),并试图在 Delphi2007 中使用 NIST 分发的 AES 已知答案测试(KAT)向量中的测试值进行 AES/Rijndael CBC 编码(128 位块,256 位密钥)。一个样本测试向量:

下面的代码返回:

这显然是不正确的。

我打电话

鉴于我的测试数据的长度,我正在避免任何填充问题。我究竟做错了什么?有什么建议么?

(不,您不必重新计算参数字符串的长度 - 我这样做了好几次。)

0 投票
1 回答
2965 浏览

php - Python 相当于 PHP 的 MCRYPT_RIJNDAEL_256 CBC

我需要这个函数的 Python 实现——我想在 appengine 上使用它。

我在 Python 方面不太好,所以请帮忙。

0 投票
1 回答
3079 浏览

c# - Rijndael/AES 解密 C# 到 PHP 转换

我在 C# 中有以下代码

此代码片段解密某个文件并输出解密版本。在 RijndaelManaged 的​​ CreateDecryptor 方法中,我使用密码作为 KEY 和 IV。

我在 PHP 的 stackoverflow 上找到了一些代码,但是如果我尝试给密钥和 iv 提供与 C# 中相同的字节数组,则不会发生任何事情。

我真的需要一些帮助如何在 PHP 中正确创建代码。我不需要在 PHP 中输​​出文件,一个字符串就足够了。

更新:默认的 C# RijndaelManaged 密码方法是 AES-128-CBC。我将我的 PHP 代码更改为那个 mcrypt 模块(默认 C# 密码方法

更新 2: 我确实设法创建了一个 Java Decryptor,这让我想到了另一件事。PHP 必须使用 PKCS7 填充。

0 投票
2 回答
985 浏览

php - 为什么 kohana 3 Encrypt 类 encode() 方法每次返回不同的字符串?

我正在encode()从 Encrypt 类中做一个,每次它为相同的输入字符串返回一个不同的字符串。我的application/config/encrypt.php

采用:

$str总是有不同的价值。这是一个错误还是应该以这种方式工作?为什么?

此外,我必须补充一点,我始终可以decode()使用该值并test每次都获取字符串。

更新:这是一个示例输出:0vahDa/2Qu3XQWObkjwLPoL73g==

非常感谢你。

0 投票
1 回答
1581 浏览

objective-c - 关于 Rijndael/SHA256 加密的困惑

我需要制定一个解密/加密算法,但我对 SHA256 / CBC / Salt / IV 等感到困惑。

正确加密字符串的示例是:

它是 Base64 编码的,然后是 Rijndael 编码的。前 8 个字符是“Salted__”,接下来的 8 个字符我假设是某种盐(随机生成)。

我提供的用于加密此数据的密钥是“12345678”。

解密后的数据应该是:

2358442189442905:ZGF2aWQ=:1324515293:1.9.12:1:MC4wLjAuMCxub25lLzA=:LfcTMMYyUcwgL8keu3sMoNC/PFEKZy8fWFvo3rJvSdo

显然它遵循 Crypt::CBC::VERSION 2.29

我似乎无法解密上面正确加密的字符串。我尝试了以下方法:

关于如何正确解密的任何想法?

编辑:更多信息:这是与我要实现的内容相关的代码。

这是一个我不完全理解的实现:http: //pastebin.com/R0b1Z7GH http://pastebin.com/aYWFXesP

0 投票
1 回答
100 浏览

rijndael - Rijndael 中的 CriptographyException

我对 Rijndael 有一些问题!我的问题是:如果我在 Decrypt 方法中使用 incсorect 密钥,那么 Rijndael 会抛出 CriptograpfyException!我怎么知道那个键不正确?为什么会抛出异常?我以为解密方法一定是返回垃圾!

0 投票
2 回答
1663 浏览

php - Rijndael 256 关于 PHP 加密困难

我必须传递一个值并将其加密为以下规范:

“256 位密钥长度,256 位块长度,32 字节块,ECB 模式,带 ASCII 编码(加密数据预计以字符串形式提供,每个字符都已转换为 2 字节 HEX 值)”

但是,我必须遗漏一些东西。这是出于对 Web 服务的验证目的,但由于解密失败,我一直被拒绝。

这是我所拥有的:

我希望在我的流程的第 1 步中缺少一些基本的加密要求。

0 投票
1 回答
586 浏览

c# - 输出无效

我有一个 PHP 程序,它将 PDF 文件加密为 .xxx 文件,此输出正在由一个 C# 程序读取,该程序将这个 .xxx 文件解密回 PDF 文件。

我的问题是,当我打开由 C# 解密的文件时,PDF 阅读器告诉我文件已损坏.. 当我在 PHP 中加密纯文本并在 C# 上解密时,我得到了我加密的文件.. 所以问题只出现在 PDF 文件中,或者换句话说,它出现在BINARY文件中

有什么建议么 ?!

笔记:

  1. 在 PHP 中,我使用 mcrypt 扩展 Rijndael 算法 CBC PKCS7 填充(填充是手动完成的)
  2. 在 C# 中,我使用 RijndaelManaged 类来加密和解密数据

编辑

这是我在 PHP 中使用的加密方法:

这是C#中的解密方法:

以下是我如何在 C# 中调用解密以及如何编写输出: