mcrypt实现方式
function decrypt($key, $encrypted_data)
{
$encrypted_data = hex2bin($encrypted_data);
$td = mcrypt_module_open('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$key = substr($key, 0, mcrypt_enc_get_key_size($td));
mcrypt_generic_init($td, $key, $iv);
$decrypted_data = mdecrypt_generic($td, $encrypted_data);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $decrypted_data;
}
function encrypt($key, $decrypted_data)
{
$td = mcrypt_module_open('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$key = substr($key, 0, mcrypt_enc_get_key_size($td));
mcrypt_generic_init($td, $key, $iv);
$encrypted_data = mcrypt_generic($td, $decrypted_data);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return bin2hex($encrypted_data);
}
openssl实现方式
function decrypt($key, $encrypted_data)
{
$encrypted_data = hex2bin($encrypted_data);
$output = openssl_decrypt($encrypted_data, 'DES-EDE3', $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING );
return $output;
}
function pkcs5Pad($text)
{
$pad = 8 - (strlen($text) % 8);
return $text . str_repeat(chr($pad), $pad);
}
function encrypt ($key, $decrypted_data)
{
$message_padded = pkcs5Pad($decrypted_data, 8);
if (strlen($message_padded) % 8) {
$message_padded = str_pad($message_padded,
strlen($message_padded) + 8 - strlen($message_padded) % 8, "\0");
}
$output = openssl_encrypt($message_padded, 'DES-EDE3', $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING );
return bin2hex($output);
}
参考资料:https://blog.csdn.net/buer2202/article/details/81363057