我有一个用 Perl Crypt::CBC (Rijndael,cbc) 加密的加密字符串。原始明文使用 Crypt::CBC 的 encrypt_hex() 方法加密。
$encrypted_string = '52616e646f6d49567b2c89810ceddbe8d182c23ba5f6562a418e318b803a370ea25a6a8cbfe82bc6362f790821dce8441a790a7d25d3d9ea29f86e6685d0796d';
我有使用的 32 个字符的密钥。
mcrypt 已成功编译为 PHP,但我很难尝试解密 PHP 中的字符串。我一直在胡言乱语。
如果我 unpack('H*', $encrypted_string),我会看到 'RandomIV' 后面跟着看起来像二进制的东西。
我似乎无法正确提取 IV 并分离实际的加密消息。我知道我没有提供我的信息,但我不确定从哪里开始。
$cipher = 'rijndael-256';
$cipher_mode = 'cbc';
$td = mcrypt_module_open($cipher, '', $cipher_mode, '');
$key = '32 characters'; // Does this need to converted to something else before being passed?
$iv = ?? // Not sure how to extract this from $encrypted_string.
$token = ?? // Should be a sub-string of $encrypted_string, correct?
mcrypt_generic_init($td, $key, $iv);
$clear = rtrim(mdecrypt_generic($td, $token), '');
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
echo $clear;
任何帮助,正确方向的指针,将不胜感激。如果我需要提供更多信息,请告诉我。