0

我对使用 PHP 进行加密还很陌生。如何从以下返回的加密中解密输出?

$key = "123456";
$text = "hello";
$cipher_alg = MCRYPT_RIJNDAEL_128;

$encrypted_body = mcrypt_encrypt($cipher_alg, $key, $text , MCRYPT_MODE_CBC, $iv);
$encrypted_body_hex = bin2hex($encrypted_body);
$encrypted_body_hex = strtoupper($encrypted_body_hex);

我想如果我只是向后工作就可以了(strtolower,hex2bin,然后通过 mcrypt_decrypt 提供它)但我没有任何运气。

我想我迷失了 bin2hex,因为我的 PHP 版本不支持 hex2bin。

任何帮助都会很棒。

提前致谢

4

1 回答 1

0

我刚刚对其进行了测试,并且它可以像您猜想的那样向后工作。那里没有惊喜。

$decrypted_hex = strtolower($encrypted_body_hex);
$decrypted_hex = hex2bin($decrypted_hex);
$text_decrypted = mcrypt_decrypt($cipher_alg, $key, $decrypted_hex, MCRYPT_MODE_CBC, $iv); 

$text_decrypted然后包含“你好”。

也许您没有在解密阶段包含用于加密的相同初始化向量?

使用它创建它$iv = mcrypt_create_iv(16);并重用它来解密,否则它将不起作用。

编辑:

如果您必须使用 PHP <= 5.4,请使用此hex2bin 替换

于 2013-08-13T10:07:05.803 回答