【发布时间】:2010-10-13 22:20:32
【问题描述】:
我必须完成的任务之一是从 PHP 端加密某些内容,然后使用 Perl 对其进行解密。
我发现似乎适合我需要的PEAR 模块是Crypt_CBC。但是,一定是我做错了什么或不明白,因为到目前为止我一直无法获得正确的结果。
下面的代码摘录专门用于测试目的,因为我想在将其应用到我的实际项目代码之前尝试一下。
首先,这是我的 PHP 代码,我用它加密传递给 $text 参数的任何内容(即 cryptTest.php?text=hello)
require_once('Crypt/CBC.php');
$key = "8326554161EB30EFBC6BF34CC3C832E7CF8135C1999603D4022C031FAEE";
$cipher = new Crypt_CBC($key, 'BLOWFISH');
$encrypted = $cipher->encrypt($text);
if (PEAR::isError($encrypted)) {
echo $encrypted->getMessage();
} else {
echo "ENCRYPTED STRING: " . $encrypted;
}
从那时起,我复制了从该脚本(在我的浏览器输出中)回显的所有内容,并将其粘贴到下面我的 PERL 脚本的 $encrypted 变量中:
use Crypt::CBC;
$encrypted = "RandomIVá´bp3Ó¯làK”Á(Û";
my $key = "8326554161EB30EFBC6BF34CC3C832E7CF8135C1999603D4022C031FAEE";
my $vector = "\0\0\0\0\0\0\0\0";
my $cipher = Crypt::CBC->new(
{'key' =>$key,
'cipher' => 'Blowfish',
'iv' => $vector,
'prepend_iv' => 0
});
my $plaintext = $cipher->decrypt($encrypted);
print $plaintext;
我一直在尝试很多事情,比如没有在 Perl 端指定 IV 等,但它一直给我错误。这种形式是我得到任何输出的唯一形式。
上面的执行结果,原始 $text = "hello" 是:Pñšîî7àÐŽZÊ&Rhello
我发现我的原始内容已正确解密,但并非没有在我想要的部分之前添加一堆废话字符。
谁能指出我做错了什么以及如何解决?
非常感谢。
【问题讨论】:
-
哦,感谢 Manni 的编辑 :) 在这里格式化文本还是新手。
标签: php perl encryption