0

使用 PHP,我正在尝试模拟以下 Perl 功能:

#!/usr/bin/perl
use DBI;
use Crypt::ECB qw(encrypt decrypt encrypt_hex decrypt_hex);
$code = encrypt_hex($key, "Blowfish", $secret);

我的结果没有产生任何接近的结果,例如:

$code = crypt($key, '$2a$07$'."$secret$");

有什么建议么?

4

3 回答 3

1

半个答案:

Crypt::ECB::encrypt_hex('Some_key', 'Blowfish', '12345678')

应该相当于

unpack('H*', mcrypt_ecb('BLOWFISH', 'Some_key', '12345678', MCRYPT_ENCRYPT))

不过,我无法让它工作。

于 2012-06-25T16:04:20.260 回答
1

我花了一些时间才弄清楚。@daxim 对 mcrypt 的使用让我走上了尝试 mcrypt 库的道路。

$td = mcrypt_module_open('blowfish', '', 'ecb', '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$encrypted_data = mcrypt_generic($td, $secret);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);

$unpacked = unpack("H*", $encrypted_data);
$hexed = implode($unpacked);
于 2012-07-11T08:06:51.620 回答
-2

我不知道那个 PERL 函数,但也许PHP 哈希函数可以满足您的要求:

string hash ( string $algo , string $data [, bool $raw_output = false ] )
于 2012-06-25T10:45:42.003 回答