使用 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$");
有什么建议么?
使用 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$");
有什么建议么?
半个答案:
Crypt::ECB::encrypt_hex('Some_key', 'Blowfish', '12345678')
应该相当于
unpack('H*', mcrypt_ecb('BLOWFISH', 'Some_key', '12345678', MCRYPT_ENCRYPT))
不过,我无法让它工作。
我花了一些时间才弄清楚。@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);
我不知道那个 PERL 函数,但也许PHP 哈希函数可以满足您的要求:
string hash ( string $algo , string $data [, bool $raw_output = false ] )