PHP相当于Perl的加密十六进制

时间:2012-06-25 10:41:14

标签: php perl cryptography

使用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$");

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

半个回答:

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

应该等同于

unpack('H*', mcrypt_ecb('BLOWFISH', 'Some_key', '12345678', MCRYPT_ENCRYPT))
但是,我无法让它发挥作用。

答案 1 :(得分: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);

答案 2 :(得分:-2)

我不知道PERL函数,但也许the PHP hash-function可以做你想要的:

string hash ( string $algo , string $data [, bool $raw_output = false ] )