文件已由Perl加密.初始解密尝试失败,我现在正试图确定是否有任何hoojoo正在进行(需要一些其他设置)
达夫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 Code应该如何阅读
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);
brian d foy.. 11
我是Perl的Crypt :: Rijndael的维护者.我没有写原始代码,但是当它为其他人失败时,我试着让它工作.
我收到了另一份报告,如RT#27632.模块中的问题是一个签名的int,应该是unsigned int.最新版本的Crypt :: Rijndael,1.07应该有修复.你使用的是哪个版本?
此外,其中一些问题与平台有关.如果你查看发行版中的rijndael.h代码,你会看到我必须跳过的箍,以便为各种平台获得正确的类型大小.我认为你在Windows上(但不是Cygwin).您使用的是哪个版本的Windows?
如RT票据中所述,第一步是使用Crypt :: Rijndael和C#实现使用相同的初始化向量加密相同的消息.你应该得到相同的输出.如果您没有获得相同的crypttext,则会出现问题.
让我知道这对你有什么用,所以我可以跟踪它作为Crypt :: Rijndael bug,如果我需要的话.
谢谢,
我是Perl的Crypt :: Rijndael的维护者.我没有写原始代码,但是当它为其他人失败时,我试着让它工作.
我收到了另一份报告,如RT#27632.模块中的问题是一个签名的int,应该是unsigned int.最新版本的Crypt :: Rijndael,1.07应该有修复.你使用的是哪个版本?
此外,其中一些问题与平台有关.如果你查看发行版中的rijndael.h代码,你会看到我必须跳过的箍,以便为各种平台获得正确的类型大小.我认为你在Windows上(但不是Cygwin).您使用的是哪个版本的Windows?
如RT票据中所述,第一步是使用Crypt :: Rijndael和C#实现使用相同的初始化向量加密相同的消息.你应该得到相同的输出.如果您没有获得相同的crypttext,则会出现问题.
让我知道这对你有什么用,所以我可以跟踪它作为Crypt :: Rijndael bug,如果我需要的话.
谢谢,