小编Mat*_*ieu的帖子

PHP:PEAR:使用Crypt_CBC加密,使用Perl的CBC解密

我必须完成的任务之一需要我从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;  
}  
Run Code Online (Sandbox Code Playgroud)

从那时起,我复制从此脚本回显的任何内容(在我的浏览器输出上)并将其粘贴到我的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;
Run Code Online (Sandbox Code Playgroud)

我一直在尝试很多东西,比如没有在Perl方面指定IV等等,但它一直给我错误.这个表单是唯一一个我可以获得任何输出的表单.

使用原始$ text ="hello"执行上述操作的结果是:Pñšîî7àÐŽZÊ&Rhello

我发现我的原始内容被正确解密,但不是在我想要的部分之前没有添加一堆垃圾字符.

任何人都可以指出我做错了什么以及如何解决它?

谢谢一堆.

php encryption perl

4
推荐指数
1
解决办法
2294
查看次数

标签 统计

encryption ×1

perl ×1

php ×1