gpt4 book ai didi

c# - 为什么 C# 不能解密 Perl 的 Crypt::Rijndael 的输出?

转载 作者:太空宇宙 更新时间:2023-11-03 17:09:32 27 4
gpt4 key购买 nike

文件已被 Perl 加密。初始解密尝试失败,我现在试图确定是否有任何 hoojoo 发生(需要一些其他设置)

Duff Perl 代码:

use strict;

use Crypt::Rijndael;

my $key ='...';

my $rcipher = Crypt::Rijndael->new ($key, Crypt::Rijndael::MODE_CBC());

undef $/;
my $encrypted = <>;

print $rcipher->decrypt($encrypted);

C#解密实现

        CryptoStream decryptor = null;
StreamReader srDecrypt = null;
FileStream fsIn = null;
RijndaelManaged rijndaelCipher = null;
string fileContents;
try
{
rijndaelCipher = new RijndaelManaged();
rijndaelCipher.Mode = CipherMode.CBC;
rijndaelCipher.Key = Encoding.UTF8.GetBytes(Password);
rijndaelCipher.IV = Encoding.UTF8.GetBytes(Password);
rijndaelCipher.Padding = PaddingMode.None;

fsIn = new FileStream(FilePath, FileMode.Open);
decryptor = new CryptoStream(fsIn, rijndaelCipher.CreateDecryptor(), CryptoStreamMode.Read);
srDecrypt = new StreamReader(decryptor);
fileContents = srDecrypt.ReadToEnd();
}
finally
{
if (decryptor != null)
decryptor.Close();
if (fsIn != null)
fsIn.Close();
if (srDecrypt != null)
srDecrypt.Close();

if (rijndaelCipher != null)
rijndaelCipher.Clear();
}

Perl 代码应该如何阅读

binmode OUTF;

my $key ="..."; # Your secret key

my $rcipher = Crypt::Rijndael->new ($key, Crypt::Rijndael::MODE_CBC());

$rcipher->set_iv($key); # You may wish this IV to be something different from the Secret Key

my $plaintext = "Please encrypt me"; # Your string to be encrypted

if(length($plaintext) % 16 != 0 ) {

$plaintext .= ' ' x (16 - (length($plaintext) % 16)); }

my $rencrypted = $rcipher->encrypt($plaintext);

最佳答案

我是 Perl 的 Crypt::Rijndael 的维护者.原始代码不是我写的,但是当它对其他人失败时,我会尝试让它工作。

我收到了另一份这样的报告 RT #27632 .模块中的问题是一个应该是无符号整数的有符号整数。最新版Crypt::Rijndael , 1.07,应该有修复。您使用的是哪个版本?

此外,其中一些问题与平台有关。如果您查看发行版中的 rijndael.h 代码,您会看到我必须跳过的环节才能为各种平台获得正确的字体大小。我认为您使用的是 Windows(但不是 Cygwin)。您使用的是哪个版本的 Windows?

如 RT 票中所述,第一步是使用 Crypt::Rijndael 和相同的初始化向量加密相同的消息。和 C# 实现。你应该得到相同的输出。如果你没有得到相同的密文,那就有问题了。

让我知道这对您有何影响,以便我可以将其跟踪为 Crypt::Rijndael如果我需要的话。

谢谢,

关于c# - 为什么 C# 不能解密 Perl 的 Crypt::Rijndael 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/569871/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com